Android设计的导航抽屉 - 如何添加在导航XML的开关? [英] Android Design Navigation Drawer - How to add a switch in nav xml?
本文介绍了Android设计的导航抽屉 - 如何添加在导航XML的开关?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是全新的Android导航设计抽屉。我想在抽屉里增加一个开关。有没有实现这一个了?
这是菜单的xml:
<菜单的xmlns:机器人=http://schemas.android.com/apk/res/android>
<组
机器人:ID =@ + ID / nav_view_menu_group_1
机器人:checkableBehavior =单一>
<项目
机器人:ID =@ + ID / nav_view_menu_item_myschedule
机器人:图标=@绘制/ ic_navview_my_schedule
机器人:标题=@字符串/ navview_menu_item_myschedule
机器人:titleCondensed =@字符串/ navview_menu_item_myschedule/>
<项目
机器人:ID =@ + ID / nav_view_menu_item_iolive
机器人:图标=@绘制/ ic_navview_play_circle_fill
机器人:标题=@字符串/ navview_menu_item_iolive
机器人:titleCondensed =@字符串/ navview_menu_item_iolive
机器人:可见=假/>
<项目
机器人:ID =@ + ID / nav_view_menu_item_explore
机器人:图标=@绘制/ ic_navview_explore
机器人:标题=@字符串/ navview_menu_item_explore
机器人:titleCondensed =@字符串/ navview_menu_item_explore/>
<项目
机器人:ID =@ + ID / nav_view_menu_item_map
机器人:图标=@绘制/ ic_navview_map
机器人:标题=@字符串/ navview_menu_item_map
机器人:titleCondensed =@字符串/ navview_menu_item_map
机器人:可见=假/>
< /组>&所述; /菜单>
我怎样才能改变一个
<项目>
是开关:
块引用><开关
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:文字=新开关
机器人:ID =@ + ID /交换机1
机器人:layout_gravity =CENTER_HORIZONTAL/>我目前使用的是默认的布局:
< android.support.design.widget.NavigationView
机器人:ID =@ + ID / nav_view
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =match_parent
机器人:layout_gravity =开始
机器人:fitsSystemWindows =真
应用:菜单=@菜单/ activity_main_drawer/>恰似在Android通知此图像 http://i.stack.imgur.com/M9nD7巴纽
我真的鸭preciate任何反馈。谢谢你。
解决方案我们可以通过下面的方式做到这一点。
@覆盖
prepareOptionsMenu(菜单菜单)上公共布尔{ //获取按ID您的项目的引用
菜单项项= menu.findItem(R.id.menu_pick_color); //在这里,你可以访问你的项目的看法,在这种情况下,项目布局具有的FrameLayout作为根视图,但你可以改变它,无论你使用
的FrameLayout rootView =(的FrameLayout)item.getActionView(); //然后通过在rootView发现它进入到您的控制
YourControlClass控制=(YourControlClass)rootView.findViewById(R.id.control_id); //从这里你可以做任何你想要与你的控制 返回true;
}I am using the new Android Design Navigation Drawer. I want to add a switch in the drawer. Is there a away to implement this?
this is the menu xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/nav_view_menu_group_1" android:checkableBehavior="single"> <item android:id="@+id/nav_view_menu_item_myschedule" android:icon="@drawable/ic_navview_my_schedule" android:title="@string/navview_menu_item_myschedule" android:titleCondensed="@string/navview_menu_item_myschedule" /> <item android:id="@+id/nav_view_menu_item_iolive" android:icon="@drawable/ic_navview_play_circle_fill" android:title="@string/navview_menu_item_iolive" android:titleCondensed="@string/navview_menu_item_iolive" android:visible="false"/> <item android:id="@+id/nav_view_menu_item_explore" android:icon="@drawable/ic_navview_explore" android:title="@string/navview_menu_item_explore" android:titleCondensed="@string/navview_menu_item_explore" /> <item android:id="@+id/nav_view_menu_item_map" android:icon="@drawable/ic_navview_map" android:title="@string/navview_menu_item_map" android:titleCondensed="@string/navview_menu_item_map" android:visible="false"/> </group> </menu>
How can I change one
<item>
to be switch:
<Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Switch" android:id="@+id/switch1" android:layout_gravity="center_horizontal" />
I am currently using the default layout:
<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" app:menu="@menu/activity_main_drawer" />
Just Like this Image under Android Notification http://i.stack.imgur.com/M9nD7.png
I really Appreciate any feedback. Thank you.
解决方案We can do it by the following way
@Override public boolean onPrepareOptionsMenu(Menu menu) { //Get a reference to your item by id MenuItem item = menu.findItem(R.id.menu_pick_color); //Here, you get access to the view of your item, in this case, the layout of the item has a FrameLayout as root view but you can change it to whatever you use FrameLayout rootView = (FrameLayout)item.getActionView(); //Then you access to your control by finding it in the rootView YourControlClass control = (YourControlClass) rootView.findViewById(R.id.control_id); //And from here you can do whatever you want with your control return true; }
这篇关于Android设计的导航抽屉 - 如何添加在导航XML的开关?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文