如何在 NavigationView 上添加 Spinner

How to add Spinner on NavigationView

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

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

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- Content View - include your main layout here -->
<include layout="@layout/activity_main" />

<!-- Drawer view -->
<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- TODO Add Spinner views here -->

    </LinearLayout>

</android.support.design.widget.NavigationView>

是的,现在 android 支持版本 23.1+,请参阅官方 blogpost

1.First 创建一个 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.Than link 它到导航视图菜单 xml 像这样

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

3.If 你想在你的 activity 中访问它,比如在选择微调项时添加操作,

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 是一个字符串数组或数组列表,用于在微调器中显示项目。

它将如下所示,

希望对小伙伴有所帮助!