android 对自定义布局文件使用数据绑定

x759pob2  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(86)

我正在android studio(Kotlin)上做一个项目,其中activity_main.xml只包含抽屉式布局,它包含app_bar_main.xml文件,而我的app_bar_main.xml是一个协调器布局,其中包含****main_content.xml现在的问题是我总是必须使用findViewById来访问这些布局中的任何元素。我试过使用AppBarMainBindingMainContentBinding,但就是无法使用。甚至NavigationViewheaderLayoutmenu也无法直接访问。

bttbmeg0

bttbmeg01#

这是我的建议。跟到底

First step : activity_main layout below

<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <include
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/app_bar_layout"
        layout="@layout/app_bar_main" />

</androidx.drawerlayout.widget.DrawerLayout>

Second step : app_bar_main layout below

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <include
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/main_content_layout"
        layout="@layout/main_content" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Step 3 : main_content layout below

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:text="Android test"
        android:id="@+id/android_test"
        android:textSize="25sp"
        android:layout_height="wrap_content"/>

</LinearLayout>

Now to access the TextView with id=android_test using viewBinding it should be as follow

lateinit var binding: ActivityMainBinding

use the below to access views id.

binding.appBarLayout.mainContentLayout.androidTest.text = 
 "This works for me"

That can change the content layout

相关问题