我如何编程访问位于NavigationView从设计支持库的头内的微调? [英] How do I programatically access a spinner located inside the header of the NavigationView from the design support library?
本文介绍了我如何编程访问位于NavigationView从设计支持库的头内的微调?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我公司采用新的设计支持库。对于导航视图,您可以指定一个头。我想要做的就是编程访问微调,它位于nav_header XML中。
微调微调=(微调)findViewById(R.id.spinner); //一个微调的正常初始化
位于activity_main.xml中
< android.support.design.widget.NavigationView
机器人:ID =@ + ID / navigation_left
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =match_parent
机器人:layout_gravity =开始
应用:headerLayout =@布局/ nav_header< - 宣布nav_header的头布局
应用:itemIconTint =@彩色/ primary_text
应用:itemTextColor =@彩色/ primary_text
应用:菜单=@菜单/ nav_draw_items/>
nav_header.xml
<?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:程序=http://schemas.android.com/apk/res-auto
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直> < android.support.v7.widget.Toolbar
机器人:ID =@ + ID / filter_toolbar
机器人:layout_width =match_parent
机器人:layout_height =机器人:ATTR / actionBarSize
机器人:背景=#2364AA
机器人:海拔=4DP
安卓了minHeight =?ATTR / actionBarSize
机器人:主题=@风格/ ThemeOverlay.AppCompat.Dark.ActionBar
应用:navigationContentDescription =@字符串/ abc_action_bar_up_description
应用:popupTheme =@风格/ ThemeOverlay.AppCompat.Light> <的LinearLayout
机器人:ID =@ + ID / spinner_ll
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:方向=横向> <的TextView
机器人:ID =@ + ID / spinner_front
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:paddingLeft =8DP
机器人:layout_gravity =center_vertical
机器人:文字=排序
机器人:文字颜色=@机器人:彩色/白
机器人:TEXTSIZE =16SP/> <微调
机器人:ID =@ + ID /微调< - 我想要访问
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:drawSelectorOnTop =真
机器人:spinnerMode =下拉菜单/> < / LinearLayout中> < /android.support.v7.widget.Toolbar>< / LinearLayout中>
解决方案
做这样的事情: -
//你的导航视图
NavigationView navigationView =(NavigationView)findViewById(R.id.navigation_left);//现在您可以通过navigationView的微调
微调微调=(微调)navigationView.findViewById(R.id.spinner);
I am using the new design support library. For the navigation view you can specify a header. What I'm trying to do is programatically access a spinner, which is located inside the nav_header xml.
Spinner spinner = (Spinner) findViewById(R.id.spinner); // Normal initialization of a spinner
Located in activity_main.xml
<android.support.design.widget.NavigationView
android:id="@+id/navigation_left"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header" <-- declaring nav_header as header layout
app:itemIconTint="@color/primary_text"
app:itemTextColor="@color/primary_text"
app:menu="@menu/nav_draw_items" />
nav_header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/filter_toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="#2364AA"
android:elevation="4dp"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:navigationContentDescription="@string/abc_action_bar_up_description"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<LinearLayout
android:id="@+id/spinner_ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/spinner_front"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:layout_gravity="center_vertical"
android:text="Sort By: "
android:textColor="@android:color/white"
android:textSize="16sp"/>
<Spinner
android:id="@+id/spinner" <-- what I'm trying to access
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:spinnerMode="dropdown" />
</LinearLayout>
</android.support.v7.widget.Toolbar>
</LinearLayout>
解决方案
Do something like this:-
//Your navigation view
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_left);
//Now get the Spinner from the navigationView
Spinner spinner = (Spinner) navigationView.findViewById(R.id.spinner);
这篇关于我如何编程访问位于NavigationView从设计支持库的头内的微调?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文