我如何编程访问位于NavigationView从设计支持库的头内的微调? [英] How do I programatically access a spinner located inside the header of the NavigationView from the design support library?

查看:137
本文介绍了我如何编程访问位于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:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:程序=htt​​p://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屋!

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