I have a problem in my action bar. I'm trying to add a checkbox on a menu item in ActionBar, but it does not work. It only shows the title of the checkbox.
This is my 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.tracking.bus.maps.SingleViewMapsActivity" >
<item
android:id="#+id/actionbar_alarm"
android:title="#string/actionbar_alarm"
app:actionViewClass="android.widget.checkbox"
app:showAsAction="ifRoom"/>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Checkable items appear only in submenus or context menus. -->
<!-- Carefully look at the attribute name checkableBehavior on groups, but
the attribute name checkable on items. The checkableBehavior encompasses
the number of items that will be checkable within that group. -->
<item android:title="None">
<menu>
<!-- The none checkableBehavior is default, but we explicitly show it here. -->
<group
android:id="#+id/noncheckable_group"
android:checkableBehavior="none">
<!-- Notice how these items inherit from the group. -->
<item
android:id="#+id/noncheckable_item_1"
android:title="#string/item_1" />
<item
android:id="#+id/noncheckable_item_2"
android:title="#string/item_2" />
<item
android:id="#+id/noncheckable_item_3"
android:title="#string/item_3" />
</group>
</menu>
</item>
<item android:title="All">
<menu>
<group
android:id="#+id/checkable_group"
android:checkableBehavior="all">
<!-- Notice how these items inherit from the group. -->
<item
android:id="#+id/checkable_item_1"
android:title="#string/item_1" />
<item
android:id="#+id/checkable_item_2"
android:checked="true"
android:title="#string/item_2" />
<item
android:id="#+id/checkable_item_3"
android:checked="true"
android:title="#string/item_3" />
</group>
</menu>
</item>
<item android:title="Single">
<menu>
<group
android:id="#+id/exclusive_checkable_group"
android:checkableBehavior="single">
<!-- Notice how these items inherit from the group. -->
<item
android:id="#+id/exclusive_checkable_item_1"
android:title="#string/item_1" />
<item
android:id="#+id/exclusive_checkable_item_2"
android:title="#string/item_2" />
<item
android:id="#+id/exclusive_checkable_item_3"
android:checked="true"
android:title="#string/item_3" />
</group>
</menu>
</item>
<item android:title="All without group">
<menu>
<!-- Notice how these items have each set. -->
<item
android:id="#+id/nongroup_checkable_item_1"
android:checkable="true"
android:title="#string/item_1" />
<item
android:id="#+id/nongroup_checkable_item_2"
android:checkable="true"
android:checked="true"
android:title="#string/item_2" />
<item
android:id="#+id/nongroup_checkable_item_3"
android:checkable="true"
android:checked="true"
android:title="#string/item_3" />
</menu>
</item>
</menu>
You have to use the following attributes (depending on item):
For check boxes: android:checkableBehavior="all"
For radio buttons: android:checkableBehavior="single"
Related
I'm not finding how to create a icon over text centered in the menu of a DrawerLayout. Using standard Drawer layout file with menu items. Tried adding android:gravity but that does not seem to help. Thoughts?
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group android:checkableBehavior="single">
<item
android:layout_gravity="center_horizontal"
android:id="#+id/nav_backpack"
android:icon="#drawable/person"
android:title="Backpack" />
<item
android:id="#+id/nav_messages"
android:icon="#drawable/messages"
android:title="Messages" />
<item
android:id="#+id/nav_library"
android:icon="#drawable/book"
android:title="Library" />
<item
android:id="#+id/nav_calendar"
android:icon="#drawable/calendar"
android:title="Calendar" />
<item
android:id="#+id/nav_progress"
android:icon="#drawable/book"
android:title="Progress" />
<item
android:id="#+id/nav_account"
android:title="Account" />
<item
android:id="#+id/nav_help"
android:title="Help" />
<item
android:id="#+id/nav_logout"
android:title="Logout" />
</group>
<group android:checkableBehavior="none">
<item android:title="About">
<menu>
<item
android:id="#+id/nav_version"
android:icon="#drawable/ic_menu_share"
android:title="v1.1(03)" />
</menu>
</item>
</group>
</menu>
Inside my NavigationView menu I have these items. There are some items with heading which is having some issues I think because when I used android:checkableBehavior it's not affected or doesn't show that it's selected or being highlighted. The items highlighted are only the nav1, nav2, nav3 items on the menu for the Drawer Layout. What I wanted to achieve is when the user clicks on the items with some headings on it like the nav4, or nav5 item It should get highlighted when selected.
<group android:checkableBehavior="single">
<item android:id="#+id/nav_1" android:icon="#drawable/ic_1"
android:title="#string/nav1" />
<item android:id="#+id/nav_2" android:icon="#drawable/ic_2"
android:title="#string/nav2" />
<item android:id="#+id/nav_3" android:icon="#drawable/ic_3"
android:title="#string/nav3" />
<item android:title="#string/heading1">
<menu >
<item android:id="#+id/nav_4" android:icon="#drawable/ic_4"
android:title="#string/nav4"/>
<item android:id="#+id/nav_5" android:icon="#drawable/ic_5"
android:title="#string/nav5" />
</menu>
</item>
</group>
if you want nav4 and nav5 to get highlighted too change to this:
<group android:checkableBehavior="single">
<item android:id="#+id/nav_1" android:icon="#drawable/ic_1"
android:title="#string/nav1" />
<item android:id="#+id/nav_2" android:icon="#drawable/ic_2"
android:title="#string/nav2" />
<item android:id="#+id/nav_3" android:icon="#drawable/ic_3"
android:title="#string/nav3" />
<item android:title="#string/heading1">
<menu >
<group android:checkableBehavior="single">
<item android:id="#+id/nav_4" android:icon="#drawable/ic_4"
android:title="#string/nav4"/>
<item android:id="#+id/nav_5" android:icon="#drawable/ic_5"
android:title="#string/nav5" />
</group>
</menu>
</item>
</group>
activity_main_drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:myapp="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<item
android:id="#+id/portal"
android:icon="#drawable/memu_icon_home_off"
android:title="#string/menu_home"
/>
</group> <!-- show -->
<item android:title="#string/menu_category"
android:icon="#drawable/memu_icon_category_on"
myapp:showAsAction="always"> <!-- not showing! -->
<menu>
<item
android:id="#+id/ct001"
android:title="#string/title_ct001" />
<item
android:id="#+id/ct002"
android:title="#string/title_ct002" />
<item
android:id="#+id/ct003"
android:title="#string/title_ct003" />
<item
android:id="#+id/ct004"
android:title="#string/title_ct004" />
<item
android:id="#+id/ct005"
android:title="#string/title_ct005" />
<item
android:id="#+id/ct006"
android:title="#string/title_ct006" />
<item
android:id="#+id/ct007"
android:title="#string/title_ct007" />
</menu>
</item>
<group>
<item
android:id="#+id/appinfo"
android:icon="#drawable/memu_icon_set_off"
android:title="#string/appinfo"
/>
</group> <!-- show -->
</menu>
I want to print left listlayout like it
(icon1) home
(icon2) category
category value.....
category value.....
category value.....
category value.....
category value.....
(icon3) app inf
'menu_icon_category_on'(icon2)
this item's icon not showing (groups icon can see)
How can I show it?
try this once
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<item
android:id="#+id/a"
android:icon="#drawable/a"
android:title="#string/a"
app:showAsAction="always"/>
<item
android:id="#+id/b"
android:icon="#drawable/b"
android:title="#string/b"
app:showAsAction="always"/>
<item
android:id="#+id/c"
android:title="#string/c"
android:icon="#drawable/c"
app:showAsAction="always"/>
<!-- More -->
<item
android:id="#+id/more"
android:icon="#drawable/ic_menu_overflow"
app:showAsAction="always"
android:title="More">
<menu>
<item android:id="#+id/d"
android:icon="#drawable/s"
android:title="#string/d"
app:showAsAction="never" />
<item android:id="#+id/e"
android:title="#string/e"
app:showAsAction="never" />
<item android:id="#+id/f"
android:icon="#drawable/f"
android:title="#string/f"
app:showAsAction="never" />
</menu>
</item>
</menu>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res-auto">
<group>
<item
android:id="#+id/portal"
android:icon="#drawable/home"
android:title="Home" />
</group>
<group android:id="#+id/grpidCategory">
<item
android:icon="#drawable/ic_menu_gallery"
android:title="menu_category"
myapp:showAsAction="always" />
</group>
<group android:id="#+id/grpidCatItems">
<item
android:id="#+id/ct001"
android:title="title_ct001" />
<item
android:id="#+id/ct002"
android:title="title_ct002" />
<item
android:id="#+id/ct003"
android:title="title_ct003" />
<item
android:id="#+id/ct004"
android:title="title_ct004" />
<item
android:id="#+id/ct005"
android:title="title_ct005" />
<item
android:id="#+id/ct006"
android:title="title_ct006" />
<item
android:id="#+id/ct007"
android:title="title_ct007" />
</group>
<group android:id="#+id/grpid2">
<item
android:id="#+id/appinfo"
android:icon="#drawable/feedback"
android:title="appinfo" />
</group>
</menu>
You can add images in the subitems of Category if you want.
Is there any way to change the Item color programmatically of the selected item
in the navigation drawer?
I'am able to use the app:itemTextColor, but the problem is if i used this,
the checked in the menu item will not highlight.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="#+id/nav_home"
android:icon="#drawable/ic_home_black_24dp"
android:title="Home" />
<item
android:id="#+id/nav_search"
android:icon="#drawable/ic_search_black"
android:title="Search Location" />
<item
android:id="#+id/nav_fav"
android:icon="#drawable/ic_favorite"
android:title="Favorites" />
<item
android:id="#+id/nav_route"
android:icon="#drawable/ic_place"
android:title="Route" />
<item
android:id="#+id/nav_recent"
android:icon="#drawable/ic_nav_route"
android:title="Recent Location" />
</group>
<item android:title="Others">
<menu>
<item
android:id="#+id/nav_settings"
android:checked="true"
android:checkable="true"
android:icon="#drawable/ic_settings"
android:title="Settings" />
<item
android:id="#+id/nav_about"
android:icon="#android:drawable/ic_menu_send"
android:title="About" />
</menu>
</item>
</menu>
create a selector
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#color/primary" android:state_checked="true" />
<item android:drawable="#android:color/transparent" />
</selector>
and set
app:itemBackground="#drawable/nav_view_item_background"
then the selected item will be highlighted.
if you want to change the text color then set
app:itemTextColor="#drawable/nav_view_item_textcolor"
and create a selector for it like
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#android:color/white" android:state_checked="true" />
<item android:color="#color/primary" />
</selector>
Note : Yasoda's answer not worked for me, which is true in most of the cases.
Though I set the state_checked is true and give it a drawable color, it seems the item is never checked.
For more search, I found the issue was happened with menu item. I hadn't given checked item to true in menu item in menu file.
Then I have to add a tag android:checkable=true to it.
and it works like charm.
I want to change background color of Group item only. I am able to change color of all items or selected items and also can change separator color but i dont know how to change Separator Title Background.
Here is my code
<?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">
<group>
<item android:id="#+id/main"
android:title="Main Menu">
<menu> <group android:checkableBehavior="single">
<item android:id="#+id/home"
android:title="Home" />
<item android:id="#+id/fav"
android:title="Favourite"/>
<item android:id="#+id/setting"
android:title="Settings" />
</group></menu>
</item>
<item android:id="#+id/sub_menu"
android:title="Second Menu"
>
<menu>
<group android:checkableBehavior="single">
<item android:id="#+id/more"
android:title="more" />
</group>
</menu>
</item>
</group>
</menu>
In this i want to change color of Main menu and Second menu.