繁体   English   中英

如何在Activity中访问app:headerLayout(axml)? Xamarin Android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM