自定义NavigationView - 添加动态headerView,Android支持设计库

Abd*_*man 20 android navigation-drawer android-design-library navigationview androiddesignsupport

我尝试了从新的android支持设计库中的navigationView.我想要一个动态的headerview.基本上,我的标题视图将显示当天的报价.我喜欢大约10个引号,我想随机选择一个引用并在headerView的textview中显示.我还想为headerView添加onClick方法.

现在,我没有看到任何以编程方式更改headerview布局的可能性.有任何建议来实现吗?

Moi*_*han 24

首先创建标题XML,如lay_header.xml

<TextView
    android:id="@+id/tvThought"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

在您的java文件中在TextView中膨胀上面的标题.喜欢

TextView headerView = (TextView) LayoutInflater.from(this).inflate(R.layout.lay_header, null);
headerView.setText("Your_thoght");
Run Code Online (Sandbox Code Playgroud)

现在将其添加为HeaderView

navView = (NavigationView) findViewById(R.id.navView);
navView.addHeaderView(headerView);
Run Code Online (Sandbox Code Playgroud)

而已...


RmK*_*RmK 14

在新的支持库更新(23.1.1)之后,

你可以这样做 -

app:headerLayout="@layout/drawer_header"内部NavigationView中添加headerview .

然后,您可以访问它,

View header = navigationView.getHeaderView(0);
TextView text = (TextView) header.findViewById(R.id.textView);
Run Code Online (Sandbox Code Playgroud)

或者如果你有多个标题

navigationView.getHeaderCount()
Run Code Online (Sandbox Code Playgroud)

参考:https://code.google.com/p/android/issues/detail? id = 190226#c31


Shw*_*rei 6

TextView txt2;
txt2 = (TextView) navigationView.inflateHeaderView(R.layout.nav_header_main).findViewById(R.id.textView2);
txt2.setText("wow! It works like a charm");
Run Code Online (Sandbox Code Playgroud)