Make NavigationBar completely transparent - java

I need the NavigationBar to display only the navigation bar strip.
To do this, I added the following to themes.xml
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
But this is not enough, since my NavigationBar has a translucent backgraund, to fix this, I found this code.
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
And in a sense it worked, but everything disappeared for me, including the navigation bar strip. How can I implement what I want?
It is necessary that only the strip is displayed on top of the activity, without background.

Related

Complete mystery about getting the status bar TEXT to appear, when immersive

"windowLightStatusBar" not working?
Android app, 24+ only
One: Set theme to eliminate action bar ..
<style name="FattieTheme" parent="Theme.AppCompat.Light.NoActionBar">
Action bar is gone.
Two: Just after super.onCreate , eliminate the bottom nav bar with exactly these three flags:
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
(Aside: after mammoth experimentation it appears to make no difference if you apply that to the window (as shown) or the root element of your xml layout.)
Nav bar is gone. (User can swipe it up; it goes away again after a few seconds.) All good.
Status bar is still there. Status bar is a gray, white writing. All good.
Your layout still begins just below the status bar. All good.
Three: Add this flag
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
You now have four flags.
(Aside: using windowFullscreen in Theme appears to do nothing. So add that flag.)
Naturally set your layout xml to fitsSystemWindows false.
Your layout now starts at the top of the glass - it's correctly behind the (gray) status bar. You can still see the (gray) status bar. All good so far.
Four: Theme, add
<item name="android:statusBarColor">#color/white</item>
it correctly goes pink. The status text is white - you can read it.
so try
<item name="android:statusBarColor">#android:color/transparent</item>
bingo! Your app is behind the status text.
BUT...
the status text is white, you likely can't see it. (Unless your app is dark there.)
How to make the text dark ?!
This is supposed to do it:
<item name="android:windowLightStatusBar">true</item>
But it does not! It does nothing.
Does anyone know how the heck to solve this problem?
Make the status bar text black.
Every ordinary app out there, the browser etc, has black status bar text on white/clear. How to??

Best practice to place menu Icons on the left side of the navigation drawer in Persian,Hebrew devices?

I am trying to have a navigation drawer that opens from the right. ( i managed to do that using LAYOUT_GRAVITY="END").
Now I want all the menu items to start from the right and also their Icons on the right too.
To do that I added (SUPPORTSRTL="TRUE") to the manifest and that also solved the problem. But here is the problem:
if the device's language is set to English, everything works perfectly.
But if the device's language is set to Persian(which is a RTL language) then everything else in the app will be right to left. That means what ever I put in the right goes to left and what ever that is set to the left goes to the right. I even tried using "start" and "end" instead of "right" and "left" but that didn't solve the problem.
To solve that I had to set the (LAYOUTDIRECTION="LTR") to the root element of layouts on every one of my actitives. That solved the problem and now everything is in the position I desired, however this doesn't seem like a sustainable solution to add this line of code to root element of each activity I will ever add to my app.
Can you please tell me if this is the best way to do it or not?
I found other questions with the same topic with no accepted proper answers.
this line of code should solve your problem
ViewCompat.setLayoutDirection(drawer, ViewCompat.LAYOUT_DIRECTION_RTL);
drawer is a reference to your DrawerLayout.
an other way to force RTL layout to activities is using styles xml. this is how i whould do it:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#color/colorPrimary</item>
<item name="colorPrimaryDark">#color/colorPrimaryDark</item>
<item name="colorAccent">#color/colorAccent</item>
</style>
<style name="ShaliRTL" parent="AppTheme">
<item name="android:layoutDirection">rtl</item>
</style>
</resources>
then in android manifest apply this new style (ShaliRTL) to your specific activity:
<activity
android:name=".YourActivity"
android:label="#string/title_activity_settings"
android:theme="#style/ShaliRTL"
android:screenOrientation="fullSensor" />
good luck.

Strange issue with Android 6.0 and view backround colors

This happens only on Android 6.0 (Marshmallow). I have set my style.xml files to use the three colors:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="preferenceTheme">#style/PreferenceThemeOverlay</item>
<item name="colorPrimary">#color/teal</item>
<item name="colorPrimaryDark">#color/oteal_dark</item>
<item name="colorAccent">#color/teal</item>
</style>
And in my Toolbar, a Tab View, and a single view... I reference the color using
android:background="?attr/colorPrimary"
However strangely when I open an activity with a view using that color... it's white (or most likely, set to transparent). When I return to the activity, the toolbar and tabview as well become transparent. Interestingly even if I hardcode the color into the view, it still happens. If I make the hardcoded value different (just by 1), the color shows up again.
It has something to do with the style, but I am not sure what. Has anyone run into this issue?
Ok, I found the issue. For a toolbar animation thing I was doing, I set the background to alpha 0.
mActivity.getToolbar().getBackground().setAlpha(0);
This background was being shared by other views. It seems in Android 6, the OS now shares the same object with various view so setting it to 0 here, will effect any other view in the app. My fix is to reset the alpha on fragment destruction.

How to set status bar tint color in layout/style XML?

I'm using the windowTranslucentStatus in my app theme.
Now, also want to tint the status bar to match my ActionBar.
Currently I'm using the SystemBarTint library, which is mostly fine except of one problem:
When the application launches, the OS shows a themed mockup layout as a splash image during the actual inflation. At that stage, there is no status bar tinting yet.
It looks like that (Took me 5 times to capture this screenshot during app launch):
Only after the activity is fully loaded the tint is applied. This is a problem for me and I'm looking for a way to somehow show the full branding on the status bar during launch.
I have read This blog post Which explains how you can actually control what will be displayed during launch by specifying a windowBackground.
I set the windowBackground to my main color -> then the entire screen painted pink.
I set background property on my activity's root element to white, but then again during launch the screen is pink, and only after the activity is loaded the content's background clears to white. This OK but not ideal.
I know I can create a bitmap with a white background and a color where the status bar should be, but then it won't be theme-able, meaning I'll have to create a new bitmap if the main color changes.
So to sum it up my question is this: Do you know a way to set a tint color for the status bar (in KitKat) in XML?
Alternatively, is it possible to create an XML drawable that will contain a colored bar at the top with a fixed height?
Here it is:
The (almost) perfect answer
Good to know that someone else was struggling the exact same problem like me.
To make it simple I'll post here the XML drawable:
window_background.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="#+id/status_bar_background"
android:drawable="#color/main_app_color"/>
<item android:id="#+id/content_window_background"
android:drawable="#color/white"
android:top="25dp"/>
</layer-list>
And now in my theme I assign this drawable as the windowBackground:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="BaseAppTheme">
<!-- Customize your theme here. -->
<item name="android:windowTranslucentNavigation">#bool/translucent_nav_bar</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowBackground">#drawable/window_background</item>
</style>
</resources>
As I have replied here, you can see a full working example I created here (unfortunately too long to copy, but rest assured that repo is going nowhere!).
Oh and from Lollipop onwards there won't be any need for tricks ;)

ActionSherlockBar Styling - PopupMenu

Styling is a place for improvement in my knowledge of the android platform. Given I've being trying to make a simple change all morning and been unable to achieve it.
I want to change the style of the overflow menu in the action bar. I have been able to change the background color, and add animations, so that when clicked it fades to a selected colour. But for the life of me I cannot change the text colour.
Below are two screenshots, one using the Theme.Sherlock and the other using Theme.Sherlock.Light.
Theme.Sherlock - This is my current setting which I have customised. What I want is the overflow (aka android:popupmenu) to be in the holo theme (as below), and ideally so that I can change the text colour.
Theme.Sherlock.Light - This theme shows the style of overflow menu that I want to see. However, as highlighted in red, the overflow button is the wrong colour, and this theme also draws a horizontal line.
I don't know whether it is best/easier to change Theme.Sherlock with the popup issue, or Theme.Sherlock.Light with the overflow icon and line issue. The application is of a "Light" theme so option two is probably the long term better choice, however i'll accept an answer that can solve the problem by changing either theme.
p.s. Where do you find a list of attributes for changing theme/styles, auto-complete is very incomplete in eclipse.
Update
This is actually an update for native action bars as im back to the same problem, but no longer supporting 2.3 or below.
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:actionOverflowButtonStyle">#style/OverFlow</item>
</style>
<style name="OverFlow" parent="#android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">**Insert your icon here**</item>
</style>
This answer is probably coming too late, but to those who may stumble across this question. I find it interesting that you were able to change the overflow's background color. I found that extremely difficult to figure out whereas changing the text was pretty straight forward. Just override the android:itemTextAppearance value in your custom theme.
<item name="android:itemTextAppearance">#style/your_new_text_appearance</item>
<style name="your_new_text_appearance">
<item name="android:textColor">#color/red</item>
</style>
I'm not familiar with ActionBarSherlock, but you can find the standard OverFlow icons on your harddisk in the folder
path\to\android\android-sdk\platforms\android-api-level\data\res\drawable-resolution
and they are called ic_menu_moreoverflow_normal_holo_dark.pngand ic_menu_moreoverflow_normal_holo_light.png
Alternatively you can find them online here.
I believe that the left circle is a drawable, too. Look inside the res\drawable.
Simple do the following:
1. In the theme.xml in your app theme style add this item:
<item name="popupMenuStyle">#style/PopupMenu</item>
2. In styles.xml add this new style:
<style name="PopupMenu" parent="#style/Widget.Sherlock.Light.ListPopupWindow">
<item name="android:textSize">14sp</item>
</style>
In the style you may override text size or other parameters as you want.
Try to override style of Theme.Sherlock with help of Android Action Bar Style Generator

Categories

Resources