首页 > 解决方案 > 如何在 Activity 中访问 app:headerLayout (axml)?Xamarin Android

问题描述

我有一个关于如何访问 headerLayout 的问题。所以我想调用一个包含在Layoutdrawerheaderlayout.axml中的变量,这样就可以将它插入到一个activity(变量)中。

这是我的代码以及我想知道的信息。

主要.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>

抽屉头布局.axml

<?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>

标签: c#androidvisual-studioxamarinxamarin.android

解决方案


可以拿NavigationView第一名MainActivity。然后使用GetHeaderView()方法获取drawerheaderlayout。最后用于FindViewById()获取文本视图。

例如:

        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);

推荐阅读