我有一个Xamarin.Android应用,该应用具有导航图,结构如下:
activity_main.xaml:
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout">
<include
layout="@layout/app_bar_main" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
</android.support.v4.widget.DrawerLayout>
nav_header_main.xaml:
<LinearLayout>
<TextView
android:id="@+id/Name"/>
</LinearLayout>
我正在尝试获取TextView @+id/Name
,但是FindViewById<TextView>(Resource.Id.RunnerName)
总是返回null
:
protected override void OnCreate(Bundle savedInstanceState)
{
SetContentView(Resource.Layout.activity_main);
DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
//some stuff with `drawer`
NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
navigationView.SetNavigationItemSelectedListener(this);
// this always returns null:
TextView runnerName = FindViewById<TextView>(Resource.Id.RunnerName);
}
我在做什么错了?
答案 0 :(得分:1)
同意迈克,如果要在Textview
中获得NavigationView
,则应在View
处获得navigationView.GetHeaderView(0);
,然后可以使用以下代码来获取TextView
NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
navigationView.SetNavigationItemSelectedListener(this);
View MyView=navigationView.GetHeaderView(0);
TextView textView1 = MyView.FindViewById<TextView>(Resource.Id.textView1);
此处正在运行屏幕截图。