Android 如何使用 Kotlin 从 NavigationView 的 headerLayout 中指定的布局访问视图
How to access a view from layout specified in headerLayout of NavigationView using Kotlin in Android
我想访问 NavigationView 的 headerLayout 中包含的 TextView。是否可以使用 Kotlin android 扩展访问视图?我确实使用了这种方法,但是 TextView(此处为 txtName)始终为 null。
这是我的activity_main.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" />
nav_header_splash.xml
<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" />
在MainActivity.kt我已经导入了
import kotlinx.android.synthetic.main.nav_header_splash.*
在 Activity 的 onCreate()
中 class 我将文本设置为
txtName.text = "Sample Code"
build.gradle 应用文件夹
apply plugin: 'kotlin-android-extensions'
build.gradle 我的项目
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
我的代码有没有错误?请帮忙。我是科特林的新手。
不要 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"
我想访问 NavigationView 的 headerLayout 中包含的 TextView。是否可以使用 Kotlin android 扩展访问视图?我确实使用了这种方法,但是 TextView(此处为 txtName)始终为 null。
这是我的activity_main.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" />
nav_header_splash.xml
<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" />
在MainActivity.kt我已经导入了
import kotlinx.android.synthetic.main.nav_header_splash.*
在 Activity 的 onCreate()
中 class 我将文本设置为
txtName.text = "Sample Code"
build.gradle 应用文件夹
apply plugin: 'kotlin-android-extensions'
build.gradle 我的项目
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
我的代码有没有错误?请帮忙。我是科特林的新手。
不要 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"