【问题标题】:Android Studio generated Navigation Drawer's HeaderAndroid Studio 生成 Navigation Drawer 的 Header
【发布时间】:2015-11-10 15:46:32
【问题描述】:
我使用 Android Studio 通过 New -> Activity -> Navigation Drawer Activity 生成了一个导航抽屉。作为 Android Studio 的最新功能,我没有通过 Google 找到足够的示例来访问标题中的 TextView。我想动态更改标题标题。
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
TextView tv = (TextView) drawer.findViewById(R.id.tvNavHeader);
在 onCreate 对我没有帮助。
【问题讨论】:
标签:
android
android-studio
navigation-drawer
【解决方案1】:
NavigationView 在 v23.1.0 中有一个 bug。您无法在onCreate 方法中访问HeaderView 中包含的视图。
一种解决方法是膨胀 HeaderView 并以编程方式将其添加到 onCreate 方法中,如下所示:
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
View header = LayoutInflater.from(this).inflate(R.layout.nav_header_view, null);
navigationView.addHeaderView(header);
TextView tv = (TextView) header.findViewById(R.id.tvNavHeader);
}
}
【解决方案2】:
不再需要为HeaderView 充气。
View header = navigationView.getHeaderView(0);
TextView text = (TextView) header.findViewById(R.id.textView);
这适用于一个标题。如果您有多个,只需浏览 Mattia 提供的google issue。