![](/img/trans.png)
[英]C#: Xamarin.Android main.axml replaced by activity_main.axml and content_main.axml
[英]How to access app:headerLayout (axml) inside Activity? Xamarin Android
我有一个关于如何访问headerLayout的问题。 因此,我想调用Layout cabinetheaderlayout.axml中包含的变量,以便可以将其插入活动(变量)中。
这是我的代码以及我想知道的信息。
Main.axml
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/navmenu"
app:headerLayout="@layout/headerdrawerlayout" /><!--this header-->
</android.support.v4.widget.DrawerLayout>
抽屉标题布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="178dp"
android:orientation="vertical"
android:weightSum="1"
android:background="@drawable/imgBg">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="54dp"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<TextView
android:id="@+id/callUsername"<!--I want to call this variable inside Activity-->
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:textColor="#ffffff"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="sans" />
</RelativeLayout>
我要做的是:首先,我为抽屉布局创建一个AppCompatActivity,在主活动上,它引用了AppCompatActivity。
DrawerLayout活动:
public class DrawerLayout : AppCompatActivity
{
TextView UserName;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.drawerheaderlayout);
UserName = FindViewById<TextView>(Resource.Id.callUsername) // here you call your username
}
}
主要活动 :
public class MainView : DrawerLayout
{
base.OnCreate(savedInstanceState);
FrameLayout contentFrameLayout = FindViewById<FrameLayout>(Resource.Id.content_frame);
LayoutInflater.Inflate(Resource.Layout.Main, contentFrameLayout); // here I Inflate the main.axml
}
您可以首先在MainActivity
获得NavigationView
。 然后,使用GetHeaderView()
方法获取drawerheaderlayout
。 最后,使用FindViewById()
获取textview。
例如:
NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
navigationView.SetNavigationItemSelectedListener(this);
View header = navigationView.GetHeaderView(0);
/*View view=navigationView.inflateHeaderView(R.layout.nav_header_main);*/
TextView name = (TextView)header.FindViewById(Resource.Id.callUsername);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.