When trying to change an icon to a downloaded drawable (or actually changing to any other icon during runtime), the icon changes once on the ActionBar.
I actually want to remove the ActionBar and leave only the bottomnav (tabs) for navigation, yet whatever i'm doing the icon changes only on the ActionBar.
The item inside bottom_nav_menu.xml:
<item
android:id="#+id/navigation_notifications"
android:icon="#drawable/ic_dashboard_black_24dp"
android:title="#string/title_notifications"
app:showAsAction="ifRoom"/>
The code that changes the icon:
#Override
public boolean onPrepareOptionsMenu (Menu menu){
menu.clear();
getMenuInflater().inflate(R.menu.bottom_nav_menu, menu);
menu.getItem(2).setIcon(this.bitmap_pic);
Log.e(TAG, "Icon Changed");
return super.onPrepareOptionsMenu(menu);
}
The result - Icon stays blank on BottomNav but appears on the ActionBar.
Expected result: BottomNav icon will be the image that shown on the top right.
Thanks
EDIT!
Issue was fixed after inflating the main_activity layout that contains the BottomNavView
Now the problem the picture isn't showing properly, attached a screenshot (Image is grey instead of showing the icon like in the ActionBar in the first picture):
Edit 2
Icon is still grey instead of showing the bitmap picture.
Added:
MenuItemCompat.setIconTintMode(bottomNavigationView.getMenu().getItem(2), PorterDuff.Mode.CLEAR);
But it still shows up like in the picture below
Edit 3
Fixed the issue using:
bottomNavigationView.setItemIconTintList(null);
I'm not sure if onPrepareOptionsMenu invoked for bottom navigation bar.
You should have to update navigation menu icon from onCreate method of that Activity.
Refer below code,
val menu = navigation.menu
val menuItem = menu.findItem(R.id.navigation_notifications) // find particular menu-item using its ID.
menuItem?.icon = this.bitmap_pic
Solution for Gray icon tint,
add below line.
MenuItemCompat.setIconTintMode(menuItem, PorterDuff.Mode.DST)
Related
I have set the background color of system bottomNavigation using:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
getWindow().setNavigationBarColor(getResources().getColor(R.color.navcolor));
}
Which is working properly !!!
But the problem is when i open a custom bottomsheet, the background color of bottomNavigation gets changed to black.
Code to show bottomsheet:
BottomSheetDialog dialog = new BottomSheetDialog(MainActivity.this);
dialog.setContentView(R.layout.sortfilterbottomsheet);
dialog.setCanceledOnTouchOutside(true);
dialog.show();
BottomNavigation when bottomsheet is closed:
BottomNavigation when bottomsheet is opened:
Can somebody help ?
So finally I got my answer.
We need to write:
<item name="android:navigationBarColor" tools:targetApi="21">#color/navcolor</item>
in themes.xml file
It will change the background color of system bottom naivgation.
My action bar has this button on the top right :
And when I click it, it gives me a settings menu item which does nothing on click:
I would like to disable the button in the first picture (looks like an ellipsis but rotated) from my ActionBar.
How would I go about doing that?
This is the default overflow menu that is set by the SDK when you create a new Android project.
To disable the menu you just have to remove the code that adds it. You should have a method onCreateOptionsMenu() overridden somewhere in your Activity, which you can remove.
selects a contextual menu item
#Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
more info here - http://developer.android.com/guide/topics/ui/menus.html#context-menu
I have the following ActionBar tab in my app. I was wondering what is the best way to change the colors around to match my app.
Each tab has a different background for the contents. How do I add
separate background colors for each tab?
How do I change the light blue strip color to white to give it a 3D
look?
I saw the following code:
ActionBar ab = getActionBar();
//ab.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
But that line changes color for all the tabs to just one color.
The Tab code in my app is:
ActionBar ab = getActionBar();
//ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff"))); not changing the tab color
//ab.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#0000ff")));
ab.setNavigationMode( ActionBar.NAVIGATION_MODE_TABS );
Tab tab = ab.newTab()
.setText( "TY1" )
.setTabListener(
new MyTabListener( this, TY1.class.getName() ) );
ab.addTab( tab );
tab = ab.newTab()
.setText( "TY2" )
.setTabListener(
new MyTabListener( this, TY2.class.getName() ) );
ab.addTab( tab );
tab = ab.newTab()
.setText( "ty3" )
.setTabListener(
new MyTabListener( this, TY3.class.getName() ) );
ab.addTab( tab );
Any and all help is appreciated. I can use XML as well, if someone points me in the right direction.
You can set a custom View for each tab. Create a new layout resource for the tab (it can just be a TextView). Leave its background empty and make a nine-patch drawable for the selection indicator. Get a LayoutInflater using
LayoutInflater inflater = getSystemService(LAYOUT_INFLATER_SERVICE);
Then for each tab, you can do this:
Tab tab = ab.newTab()
.setText("TY1")
.setTabListener(new MyTabListener(this, TY1.class.getName()));
View tabView = inflater.inflate(R.layout.my_tab_layout, null);
tabView.setBackgroundColor(...); // set custom color
tab.setCustomView(tabView);
ab.addTab(tab);
You can change ActionBar's background color by defining custom style, as:
<resources>
<style name="MyTheme" parent="#android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">#style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="#android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">ANY_HEX_COLOR_CODE</item>
</style>
</resources>
go to: http://jgilfelt.github.io/android-actionbarstylegenerator/#name=example&compat=holo&theme=light&actionbarstyle=solid&texture=0&hairline=0&backColor=E4E4E4%2C100&secondaryColor=D6D6D6%2C100&tabColor=33B5E5%2C100&tertiaryColor=F2F2F2%2C100&accentColor=33B5E5%2C100&cabBackColor=FFFFFF%2C100&cabHighlightColor=33B5E5%2C100
and create your action bar then download it. After you download it , you can use it in your project.
For those looking for more detailed example code on how to create a custom tab view and then change the tab's formatting, you can see my answer at https://stackoverflow.com/a/28389366/3268329. That question had to do with changing the tab text color when a particular tab is selected, but you can easily modify the code to change the background instead or do whatever else you need.
https://stackoverflow.com/a/18491600/3268329 (S.Thiongane's answer) also shows how to set up different background resources.
I am developing an Android application which uses SlidingMenu and
ActionBarSherlock.
I want to include a MenuItem in a particular SherlockListFragment which
onClick would refresh the content. The issue I have is that the item always
overflows even though there is plenty of space. When the device is turned to
landscape orientation the item moves into the ActionBar automatically.
Can anyone help with this issue? I have set the showAsAction to "always" but
still the issue is not fixed.
This is the XML file for the menu
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="#+id/menu_refresh"
android:title="S"
android:showAsAction="always"
/>
</menu>
This is the code in the SherlockListFragment
#Override
public void onCreateOptionsMenu(Menu menu,
com.actionbarsherlock.view.MenuInflater inflater) {
inflater = getSherlockActivity().getSupportMenuInflater();
inflater.inflate(R.menu.fragment_news,menu);
super.onCreateOptionsMenu(menu, inflater);
}
This is what the application is currently looking like:
I need the button in the ActionBar
try to set an icon
android:icon="#drawable/ic_menu_done_holo_light"
OR use flag withText
android:showAsAction="withText|always"
I am trying to create a splash screen for my app. The problem is it first renders empty layout with default title bar and then fades in my image.
This is all I have onCreate
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.activity_splash);
Attempted solution from switching activities without animation
Also tried to set window attributes
WindowManager.LayoutParams lp = this.getWindow().getAttributes();
lp.windowAnimations = lp.windowAnimations | android.R.attr.windowDisablePreview;
this.getWindow().setAttributes(lp);
neither made any visible difference.
you can get rid of titlebar by setting theme for your splash activity. Add this to declaration of activity in your Manifest
android:theme="#android:style/Theme.NoTitleBar"