Hi in the below I was implemented the left navigation drawer with and header and menu items.Want to display menu items are home,setting,trash,logout.
Want to display menu items horizontally .
can any one help me how to display menu items horizontally with the below menu items.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="all">
<item
android:id="#+id/home"
android:title="Home"
android:icon="#drawable/ic_home"/>
<item
android:id="#+id/settings"
android:title="Settings"
android:icon="#drawable/ic_setting"/>
<item
android:id="#+id/trash"
android:title="History"
android:icon="#drawable/ic_trash"/>
<item
android:id="#+id/logout"
android:title="Logout"
android:icon="#drawable/ic_exit"/>
</group>
</menu>
activity_main:
<com.google.android.material.navigation.NavigationView
android:id="#+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
app:headerLayout="#layout/nav_header"
app:menu="#menu/menu_navigation">
</com.google.android.material.navigation.NavigationView>
add this line in you XML
app:actionLayout="#layout/action_layout"
into an item, where action_layout is the layout that you want to show in horizontal orientation, for example:
<item
android:id="#+id/nav_manage"
android:title="layout"
app:actionLayout="#layout/action_layout" />
This will be your modified XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="all">
<item
android:id="#+id/home"
android:title="Home"
app:actionLayout="#layout/action_layout"
android:icon="#drawable/ic_home"/>
<item
android:id="#+id/settings"
android:title="Settings"
app:actionLayout="#layout/action_layout"
android:icon="#drawable/ic_setting"/>
<item
android:id="#+id/trash"
android:title="History"
app:actionLayout="#layout/action_layout"
android:icon="#drawable/ic_trash"/>
<item
android:id="#+id/logout"
android:title="Logout"
app:actionLayout="#layout/action_layout"
android:icon="#drawable/ic_exit"/>
</group>
</menu>
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>
I have a problem I want to move the text next to the picture this is a picture of the problem
https://imgur.com/a/E2mKn
I want to get this
https://imgur.com/a/7wgkn
My menu
<?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"
android:layoutDirection="ltr">
<group>
<item
android:id="#+id/menu_login"
android:title="Login"
android:icon="#drawable/icon_login"
/>
<item
android:id="#+id/menu_myfile"
android:title=""
android:icon="#drawable/icon_login"
android:visible="false"
/>
<item
android:id="#+id/menu_favorites"
android:title="Favorites"
android:icon="#drawable/icon_favorites"/>
<item
android:id="#+id/menu_rate"
android:title="Rate us"
android:icon="#drawable/icon_rate"/>
<item
android:id="#+id/menu_logout"
android:title="Logout"
android:icon="#drawable/icon_logout"
android:visible="false"
/>
</group>
<group
android:id="#+id/group_two">
<item android:title="Subscribe to us">
<menu>
<item
android:id="#+id/menu_facebook"
android:title="Facebook"
android:icon="#drawable/icon_facebook"/>
<item
android:id="#+id/menu_telegram"
android:title="Telegram"
android:icon="#drawable/icon_telegram"/>
<item
android:id="#+id/menu_instagram"
android:title="Instagram"
android:icon="#drawable/icon_instagram"/>
<item
android:id="#+id/menu_twitter"
android:title="Twitter"
android:icon="#drawable/icon_twitter"/>
</menu>
</item>
</group>
</menu>
I try to use this but it's not working
android:layoutDirection="ltr"
The problem is only on some old devices, I wish to get help thanks a lot.
You have to try like this
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="#+id/cc_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
.
.
.
.
.
<android.support.design.widget.NavigationView
android:id="#+id/cc_nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="#layout/am_nav_header_main_new"
app:menu="#menu/am_main_navigation_items" />
</android.support.v4.widget.DrawerLayout>
am_main_navigation_items.xml
<?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/cc_nav_home"
android:icon="#drawable/ic_dashboard_primary"
android:title="#string/nav_dashboard" />
<item
android:id="#+id/am_nav_auditList"
android:icon="#drawable/ic_audits_primary"
android:title="#string/nav_auditList" />
<item
android:id="#+id/nav_about"
android:icon="#drawable/ic_about_primary"
android:title="#string/cc_nav_about" />
<item
android:id="#+id/nav_app_info"
android:icon="#drawable/ic_info_outline_primary"
android:title="#string/cc_nav_app_info" />
</group>
<group
android:id="#+id/group_two">
<item android:title="Subscribe to us">
<menu>
<item
android:id="#+id/menu_facebook"
android:title="Facebook"
android:icon="#drawable/icon_facebook"/>
<item
android:id="#+id/menu_telegram"
android:title="Telegram"
android:icon="#drawable/icon_telegram"/>
<item
android:id="#+id/menu_instagram"
android:title="Instagram"
android:icon="#drawable/icon_instagram"/>
<item
android:id="#+id/menu_twitter"
android:title="Twitter"
android:icon="#drawable/icon_twitter"/>
</menu>
</item>
</group>
</menu>
This will help, layoutDirection was introduced in API 17, all devices below should call this line:
ViewCompat.setLayoutDirection( findViewById(R.id.my_view) , ViewCompat.LAYOUT_DIRECTION_LTR );
oh and make sure that for the above you will use android.support.v4.view.ViewCompat import
or you can just add this piece to the menu items:
android:layout_gravity="end"
Try placing the entire menu inside a FrameLayout. Then set the layout_width of the frame layout to wrap_content.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<menu>
<group>
<item
android:id="#+id/menu_login"
android:icon="#drawable/icon_login"
android:title="Login" />
<item
android:id="#+id/menu_myfile"
android:icon="#drawable/icon_login"
android:title=""
android:visible="false" />
<item
android:id="#+id/menu_favorites"
android:icon="#drawable/icon_favorites"
android:title="Favorites" />
<item
android:id="#+id/menu_rate"
android:icon="#drawable/icon_rate"
android:title="Rate us" />
<item
android:id="#+id/menu_logout"
android:icon="#drawable/icon_logout"
android:title="Logout"
android:visible="false" />
</group>
<group android:id="#+id/group_two">
<item android:title="Subscribe to us">
<menu>
<item
android:id="#+id/menu_facebook"
android:icon="#drawable/icon_facebook"
android:title="Facebook" />
<item
android:id="#+id/menu_telegram"
android:icon="#drawable/icon_telegram"
android:title="Telegram" />
<item
android:id="#+id/menu_instagram"
android:icon="#drawable/icon_instagram"
android:title="Instagram" />
<item
android:id="#+id/menu_twitter"
android:icon="#drawable/icon_twitter"
android:title="Twitter" />
</menu>
</item>
</group>
</menu>
</FrameLayout>
I want to add icons to the options menu item , i searched many tutorials but still am not able to display icons in my options menu.
<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"
android:icon="#drawable/star"
app:showAsAction="ifRoom"
android:id="#+id/option"
android:layout_marginRight="10dp"
tools:context="com.example.siva.prep.MainActivity">
<item android:id="#+id/menu_gift"
android:icon="#drawable/gift"
android:title="Giftbox"
android:textSize="16dp" />
<item android:id="#+id/menu_share"
android:icon="#drawable/share"
android:title="Club/social"
android:textSize="16dp" />
<item android:id="#+id/menu_heart"
android:icon="#drawable/heart"
android:title="Im Lucky" />
<item android:id="#+id/menu_cart"
android:icon="#drawable/cart"
android:title="Shopping cart"
android:textSize="16dp" /></menu>
<?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:icon="#drawable/ic_more"
android:title="Main Menu"
app:showAsAction="always">
<menu>
<item
android:id="#+id/action_add"
android:icon="#drawable/ic_add"
android:orderInCategory="100"
android:title="Add"
app:showAsAction="never" />
<item
android:id="#+id/action_remove"
android:icon="#drawable/ic_remove"
android:orderInCategory="100"
android:title="remove"
app:showAsAction="never" />
</menu>
</item>
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.
I am trying to figure out how I can change color of sub-menu items which is actually attached to navigation view. Following codes are actually from default template of Navigation Drawer which is available in android studio.
activity_main_drawer.xml
<?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_camara"
android:icon="#android:drawable/ic_menu_camera"
android:title="Import"
/>
<item
android:id="#+id/nav_gallery"
android:icon="#android:drawable/ic_menu_gallery"
android:title="Gallery"/>
<item
android:id="#+id/nav_slideshow"
android:icon="#android:drawable/ic_menu_slideshow"
android:title="Slideshow"/>
<item
android:id="#+id/nav_manage"
android:icon="#android:drawable/ic_menu_manage"
android:title="Tools"/>
</group>
<item android:title="Communicate">
<menu>
<item
android:id="#+id/nav_share"
android:icon="#android:drawable/ic_menu_share"
android:title="Share"/>
<item
android:id="#+id/nav_send"
android:icon="#android:drawable/ic_menu_send"
android:title="Send"/>
</menu>
</item>
</menu>
activity_main.xml
<include
layout="#layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.design.widget.NavigationView
android:id="#+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
android:background="#512DA8"
app:headerLayout="#layout/nav_header_main"
app:menu="#menu/activity_main_drawer"
app:itemTextColor="#drawable/nav_menu_item_color"
app:itemIconTint="#drawable/nav_menu_item_color"/>
</android.support.v4.widget.DrawerLayout>
and I have a drawable file for click and normal color which is actualy used above.
nav_menu_item_color.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<selector>
<item android:color="#color/navTextHover" android:state_checked="true" />
<item android:color="#color/navTextNormal" />
</selector>
So, you can see result image as I attached below :-
Colors not working for sub menu, so, what I want to do is .. I want to change color of menu item "communicate" and sub-menu item "send" and "share" as it is working for root menu items
Changing the color of the header and Subheader in the Navigation View and paste the below code in your res>values>styles.xml
<style name="NavigationViewStyle">
<item name="android:textSize">16sp</item> <!-- menu item text size-->
<item name="android:listPreferredItemHeightSmall">40dp</item><!-- menu item height-->
<item name="android:textColorPrimary">#android:color/white</item>
<item name="android:textColorSecondary">#FFB300</item>
</style>
NavigationView set the header color as textcolor secondary and subheader color as the textColor Primary .
finally, add this style in the navigationView
<android.support.design.widget.NavigationView
android:id="#+id/navview"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#022F56"
app:headerLayout="#layout/sidebar_header"
app:theme="#style/NavigationViewStyle"
app:menu="#menu/sidebar_home"/>
And the output will be,
Thats all, happy Coding.
Your submenu needs to be wrapped in a menu & group tag like below. This will allow you to select one of any of the menu items at a time. You can select them by setting the item as checked in your NavigationView.OnNavigationItemSelectedListener.
<?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/nav1"
android:checked="true"
android:icon="#drawable/myd1"
android:title="Nav 1"
/>
</group>
<item android:title="#string/nav_item_subheading_app">
<menu>
<group android:checkableBehavior="single">
<item
android:id="#+id/nav1"
android:icon="#drawable/myd1"
android:title="Nav 1"
/>
</group>
</menu>
</item>
</menu>