Android Toolbar: sometimes icon doesn't display properly - android

This is my menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="#+id/menu_input_search"
android:title="#string/search"
android:orderInCategory="1"
app:actionViewClass="com.app.ui.widget.SearchView"
app:showAsAction="always"
android:visible="false"/>
<item
android:id="#+id/menu_search"
android:icon="#drawable/ic_search_tb"
android:orderInCategory="2"
android:visible="false"
app:showAsAction="always" />
<item
android:id="#+id/menu_favorite"
android:icon="#drawable/ic_favorite_border_tb"
android:orderInCategory="3"
android:visible="false"
app:showAsAction="always" />
<item
android:id="#+id/menu_filter"
android:icon="#drawable/ic_filter_tb"
android:orderInCategory="4"
android:visible="false"
app:showAsAction="always" />
</menu>
And sometimes, for some reasons, the "menu_favorite" icon doesn't display properly (sometimes in grey, sometimes nothing, etc.), it's crazy...

Related

SearchView in Toolbar: the second icon doesn't appear properly

I don't understand why the second icon (filter) is appeared not properly (no padding on right?). Have you got some ideas guys?
This is my menu setup xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="#+id/menu_input_search"
android:title="#string/search"
android:orderInCategory="1"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom"
android:visible="false"/>
<item
android:id="#+id/menu_search"
android:icon="#drawable/ic_search_tb"
android:orderInCategory="1"
android:visible="false"
app:showAsAction="ifRoom" />
<item
android:id="#+id/menu_filter"
android:icon="#drawable/ic_filter_tb"
android:orderInCategory="2"
android:visible="false"
app:showAsAction="always" />
</menu>

Menu group in toolbar need item dividers

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="#+id/action_filter"
android:icon="#drawable/arrows_sync_icn"
android:orderInCategory="102"
android:title="Filter"
app:showAsAction="always"
>
<menu>
<group android:id="#+id/group_1">
<item
android:id="#+id/action_latest_story"
android:title="Latest stories"
/>
</group>
<group android:id="#+id/group_2">
<item
android:id="#+id/action_most_liked"
android:title="Most liked"
/>
</group>
<group android:id="#+id/group_3">
<item
android:id="#+id/action_most_shared"
android:title="Most shared"
/>
</group>
<group android:id="#+id/group_4">
<item
android:id="#+id/action_most_read"
android:title="Most read"
/>
</group>
</menu>
</item>
<item
android:id="#+id/action_notification"
android:actionLayout="#layout/lyt_notification_count"
android:icon="#drawable/notification_navigation"
android:orderInCategory="101"
android:title="Notification"
app:showAsAction="always" />
<item
android:id="#+id/action_search"
android:icon="#drawable/search_navigation"
android:orderInCategory="100"
android:title="Search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always" />
</menu>
So this is what I'm doing now. I need to draw a item divider between each item(Orderincatogory = 102). I don't know how to do that please help if anyone know the answer. These are in toolbar and I'm testing in kitkat and lollypop device.

Image Icon with Action Bar's Option Menu Item

I want to display Action Bar's Option Menu items with Image Icon like one we use in Navigation Drawer Bar.
Right now, My app option menu is showing as below : How do I display Image icon with Item 1, Item 2 etc.
Below code solved my issue. from this link : How To show icons in Overflow menu in ActionBar
<item
android:id="#+id/empty"
android:icon="#drawable/ic_action_overflow"
android:orderInCategory="101"
android:showAsAction="always">
<menu>
<item
android:id="#+id/action_show_ir_list"
android:icon="#drawable/ic_menu_friendslist"
android:showAsAction="always|withText"
android:title="List"/>
</menu>
</item>
Here is the solution You are Looking for Copy this menu.xml And change icons and name as per your need in mipmap
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="#+id/main_menu"
android:actionViewClass="android.widget.ImageButton"
android:icon="#mipmap/menu"
android:orderInCategory="200"
android:title="#string/action_settings"
app:showAsAction="always">
<menu>
<item
android:id="#+id/home"
android:icon="#mipmap/home_menu"
android:title="Home" />
<item
android:id="#+id/edit_profile"
android:icon="#mipmap/my_account"
android:title="Profile" />
<item
android:id="#+id/my_account"
android:icon="#mipmap/my_account"
android:title="My Account" />
<item
android:id="#+id/messages"
android:icon="#mipmap/message1"
android:title="Messages" />
<item
android:id="#+id/notification"
android:icon="#mipmap/notification"
android:title="Notifications" />
<item
android:id="#+id/settings"
android:icon="#mipmap/settings"
android:title="Settings" />
<item
android:id="#+id/logout"
android:icon="#mipmap/logout"
android:title="Logout" />
</menu>
</item>
</menu>
Then create menu_main.xml like this
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="never" />
</menu>
Same like a drawer view
<?xml version="1.0" encoding="utf-8"?>
<group android:checkableBehavior="single">
<item
android:id="#+id/navigation_item_attachment"
android:checked="true"
android:icon="#drawable/ic_attachment"
android:title="#string/nav_item_attachment" />
<item
android:id="#+id/navigation_item_images"
android:icon="#drawable/ic_image"
android:title="#string/nav_item_images" />
<item
android:id="#+id/navigation_item_location"
android:icon="#drawable/ic_place"
android:title="#string/nav_item_location" />
</group>
<item android:title="#string/nav_sub_menu">
<menu>
<item
android:icon="#drawable/ic_emoticon"
android:title="#string/nav_sub_menu_item01" />
<item
android:icon="#drawable/ic_emoticon"
android:title="#string/nav_sub_menu_item02" />
</menu>
</item>
new menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.yadav.bookedup.MainActivity">
<item
android:id="#+id/action_search"
android:title="#string/action_search"
android:orderInCategory="200"
android:icon="#drawable/abc_ic_search_api_mtrl_alpha"
app:showAsAction="ifRoom|collapseActionView"
/>
<item
android:id="#+id/action_notf"
android:title="Notification"
android:orderInCategory="200"
android:icon="#drawable/notf"
app:showAsAction="ifRoom|collapseActionView"
/>
<item
android:id="#+id/action_info"
android:orderInCategory="100"
android:title="Info"
app:showAsAction="never"
android:icon="#drawable/ic_image" />
<item
android:id="#+id/req_clg"
android:orderInCategory="100"
android:title="Request College"
app:showAsAction="never"
android:icon="#drawable/ic_image" />
<item
android:id="#+id/req_book"
android:orderInCategory="100"
android:title="Request Books"
app:showAsAction="never"
android:icon="#drawable/ic_image" />
<item
android:id="#+id/share_app"
android:orderInCategory="100"
android:title="Share the app"
app:showAsAction="never"
android:icon="#drawable/ic_image" />
<item
android:id="#+id/rate_app"
android:orderInCategory="100"
android:title="Rate the App"
app:showAsAction="never" />
<item
android:id="#+id/action_terms"
android:orderInCategory="100"
android:title="Terms & Conditions"
app:showAsAction="never" />
<item
android:id="#+id/action_about"
android:orderInCategory="100"
android:title="About Us"
app:showAsAction="never" />
<item
android:id="#+id/action_contct"
android:orderInCategory="100"
android:title="Contact Us"
app:showAsAction="never" />

Not able to get both Icon and Image in Android Actionbar button

I am using a Split ActionBar & I have successfully inflated the menu for my fragment
When i used below code ::
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/action_settings"/>
<item
android:id="#+id/home"
android:orderInCategory="1"
android:showAsAction="always"
android:title="Search"/>
<item
android:id="#+id/java"
android:orderInCategory="2"
android:showAsAction="always"
android:title="Share"/>
<item
android:id="#+id/android"
android:orderInCategory="3"
android:showAsAction="always"
android:title="Account"/>
</menu>
I get the output as::
When i use second code in an another usecase::
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/action_settings"/>
<item
android:id="#+id/home"
android:icon="#drawable/ic_action_search"
android:orderInCategory="1"
android:showAsAction="always"
android:title="Search"/>
<item
android:id="#+id/java"
android:icon="#drawable/ic_action_share"
android:orderInCategory="2"
android:showAsAction="always"
android:title="Share"/>
<item
android:id="#+id/android"
android:icon="#drawable/ic_action_person"
android:orderInCategory="3"
android:showAsAction="always"
android:title="Account"/>
</menu>
I get the output as below::
Problem I am facing::
I am not able to get both Icon and button text ?
Is it not possible to obtain both ? if so how ?
Or is it we have to use only either one of them ?
You should use 'withText' value as well in the showAsAction attribute.
So the menu item will now look like,
<item
android:id="#+id/android"
android:icon="#drawable/ic_action_person"
android:orderInCategory="3"
android:showAsAction="always|withText"
android:title="Account"/>
Also, note it will ultimately depend upon the space available in the ActionBar. One cannot force it and in case if space is not enough it will end up as an overflow for the overflowing content.
Try android:showAsAction="always|withText"

ActionBar appcompat submenu

In my application android I would like to add an actionbar like this (that it have a submenu)
my xml code is
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="#+id/menu_item_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always"
android:icon="#drawable/abc_ic_search"
android:title="Search Products">
</item>
<item
android:id="#+id/menu_Home"
app:showAsAction="never"
android:icon="#drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Home"/>
<item
android:id="#+id/menu_favourite"
app:showAsAction="never"
android:icon="#drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="favourite"/>
<item
android:id="#+id/menu_Balance"
app:showAsAction="never"
android:icon="#drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Balance"/>
<item
android:id="#+id/menu_logout"
android:icon="#drawable/abc_ic_search"
app:showAsAction="never"
android:showAsAction="ifRoom|withText"
android:title="Logout"/>
</menu>
in android sdk 2.x the result it's not what i want
i tryed also
<item
android:id="#+id/root_menu"
DetailsPage:showAsAction="always"
android:icon="#drawable/abc_ic_menu_moreoverflow_normal_holo_light"
android:title="More">
<menu>
<item
android:id="#+id/menu_Home"
DetailsPage:showAsAction="ifRoom|withText"
android:icon="#drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Home"/>
<item
android:id="#+id/menu_Balance"
DetailsPage:showAsAction="ifRoom|withText"
android:icon="#drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Balance"/>
<item
android:id="#+id/menu_logout"
android:icon="#drawable/abc_ic_search"
DetailsPage:showAsAction="ifRoom|withText"
android:showAsAction="ifRoom|withText"
android:title="Logout"/>
</menu>
</item>
what I what to do to have the same picture plz ( maybe menu popup ?)
help me plz
Changing the namespace from app to compat solved my problem:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto" >
<item
android:id="#+id/action_submenu"
android:title="#string/action_submenu"
android:icon="#drawable/abc_ic_menu_moreoverflow_normal_holo_dark"
compat:showAsAction="always">
<menu>
<item
android:id="#+id/action_settings"
android:title="#string/action_settings"
compat:showAsAction="always"/>
<item
android:id="#+id/action_example"
android:title="#string/action_example"
compat:showAsAction="withText|ifRoom"/>
</menu>
</item>
</menu>
Your using the namespaces in the wrong way. To have the showAsAction property to work properly you have to use the "app" namespace not the android one. In your first try you're using it and every time you set showAsAction="never". That's why you're not getting the expected result.
Remove all your android:showAsAction="..." and set all the app:showAsAction="always" or ="ifRoom|withText"
Hope I answered your question, if I did please check it as right answer.

Categories

Resources