Android设计的导航抽屉 - 如何添加在导航XML的开关? [英] Android Design Navigation Drawer - How to add a switch in nav xml?

查看:243
本文介绍了Android设计的导航抽屉 - 如何添加在导航XML的开关?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是全新的Andr​​oid导航设计抽屉。我想在抽屉里增加一个开关。有没有实现这一个了?

这是菜单的xml:

 <菜单的xmlns:机器人=htt​​p://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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆