如何在NavigationView上添加Spinner

时间:2016-01-18 04:44:43

标签: android menuitem navigationview

如何在NavigationView列表中添加Spinner?有可能吗?

enter image description here

2 个答案:

答案 0 :(得分:5)

是的,现在可以使用Android支持版本23.1+,请参阅此官方blogpost

1.首先使用微调项创建一个xml布局 spinner_menu.xml

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical"
    android:layout_height="match_parent">
</Spinner>

2.然后将它链接到像这样的导航视图菜单xml

<item android:id="@+id/nav_lang"
     android:icon="@android:drawable/ic_menu_manage"
     android:title="Language"
     app:actionLayout="@layout/spinner_menu"/>

3.如果您想在活动中访问它,例如在选择微调项目时添加操作,

Spinner sp = (Spinner) navigationView.getMenu().findItem(R.id. nav_lang).getActionView();
    sp.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,langs));
    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(MainActivity.this,langs[position],Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });

其中 langs 是一个字符串数组或数组列表,用于在微调器中显示项目。

看起来如下所示,

enter image description here

希望它会帮助你的伙伴!

答案 1 :(得分:0)

当然有可能。 NavigationView最终从FrameLayout扩展,因此您的布局可以设置如下:

.container:before {
    content:"";
    background-color:white;
    display:inline-block;
    height: 0.5em;
    width:2em;
    position:absolute;
    top: 1.75em;
    left: 0.5em
}