如何使用Android中的Kotlin从NavigationView的headerLayout中指定的布局访问视图

时间:2017-12-06 08:18:28

标签: kotlin kotlin-android-extensions kotlin-extension

我想访问包含在NavigationView的headerLayout中的TextView。是否可以使用Kotlin android扩展程序访问该视图?我使用了这个方法,但TextView(此处为txtName)始终为null。

这是我的 activity_main.xml

res.sendFile(__dirname + "/someadditionalfoldrs/main.html")

nav_header_splash.xml

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header_splash"
    app:menu="@menu/activity_splash_drawer" />
MainActivity.kt

我已导入

<TextView
    android:id="@+id/txtName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/txt1"
    android:layout_below="@+id/imageView"
    android:text="@string/name"
    android:textSize="18sp"
    android:textColor="@color/white" />

在Activity类的import kotlinx.android.synthetic.main.nav_header_splash.* 中,我将文本设置为

onCreate()
app文件夹的

build.gradle

txtName.text = "Sample Code"
我项目的

build.gradle

apply plugin: 'kotlin-android-extensions'

我的代码中有错误吗?请帮忙。我是Kotlin的新人。

1 个答案:

答案 0 :(得分:9)

不要import kotlinx.android.synthetic.main.nav_header_splash.*它可以从主文件本身获得

代替import kotlinx.android.synthetic.main.nav_header_splash.view.*

并使用

获取视图
val header = mNavigationView.getHeaderView(0)
header.txtName.text = "Sample Code"