包含布局的视图绑定不起作用
View binding with include layout not working
我想使用视图绑定来绑定包含布局中的视图。我已经为包含的布局提供了一个 id 'topBar',但仍然无法访问其中的视图。我尝试使用 Android studio auto-fix 创建一个局部变量来查看它的类型。它显示类型“android.widget.a”
我正在使用 Android Studio4.0。这是 Android Studio 中的错误吗?
我的Activity
private ActivityWalletBinding viewBinding;
private ViewTitleBinding topBarBinding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding = ActivityWalletBinding.inflate(getLayoutInflater());
setContentView(viewBinding.getRoot());
viewBinding.topBar;
android.widget . a = viewBinding.topBar; //Create local var using auto fix in android
studio
}
activity_wallet.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include
android:id="@+id/topBar"
layout="@layout/view_title"/>
view_title.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="65dp"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/white"
android:paddingTop="19dp"
android:id="@+id/fl_tab">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/btn_back"
android:layout_width="39dp"
android:layout_height="39dp"
android:layout_centerVertical="true"
android:onClick="backClick"
android:padding="11dp"
android:src="@mipmap/icon_back"
android:tint="@color/gray1"
/>
<TextView
android:id="@+id/titleView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textColor="@color/textColor"
android:textSize="18sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tv_right_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:gravity="center"
android:layout_alignParentRight="true"
android:layout_marginRight="11dp"
android:textColor="@color/enable_right_title"
android:textSize="15sp"
tools:text="假文字"
/>
</RelativeLayout>
</FrameLayout>
这是 android 工作室的错误还是什么?
xml 级别用标签
包含您的 xml 根目录
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
</data>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include
android:id="@+id/topBar"
layout="@layout/view_title"/>
</layout>
我什么也没做,它会自动运行。我确实做了清理、重建、重启 Android 工作室……当时做了一些事情,但没有用。也许 link 另一个 class 中的另一个布局会触发一些东西,只需在引擎盖下修复它,因为我搁置了这个问题并继续前进。
在我的例子中,我包含了另一个模块的布局,无法通过绑定访问包含的布局中的内部视图,问题是我没有在包含 [= 的模块中启用 viewBinding 16=] 我想包含的文件,所以添加
buildFeatures {
viewBinding true
}
那个模块的 gradle.build
帮我修好了!
我想使用视图绑定来绑定包含布局中的视图。我已经为包含的布局提供了一个 id 'topBar',但仍然无法访问其中的视图。我尝试使用 Android studio auto-fix 创建一个局部变量来查看它的类型。它显示类型“android.widget.a” 我正在使用 Android Studio4.0。这是 Android Studio 中的错误吗?
我的Activity
private ActivityWalletBinding viewBinding;
private ViewTitleBinding topBarBinding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding = ActivityWalletBinding.inflate(getLayoutInflater());
setContentView(viewBinding.getRoot());
viewBinding.topBar;
android.widget . a = viewBinding.topBar; //Create local var using auto fix in android
studio
}
activity_wallet.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include
android:id="@+id/topBar"
layout="@layout/view_title"/>
view_title.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="65dp"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/white"
android:paddingTop="19dp"
android:id="@+id/fl_tab">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/btn_back"
android:layout_width="39dp"
android:layout_height="39dp"
android:layout_centerVertical="true"
android:onClick="backClick"
android:padding="11dp"
android:src="@mipmap/icon_back"
android:tint="@color/gray1"
/>
<TextView
android:id="@+id/titleView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textColor="@color/textColor"
android:textSize="18sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tv_right_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:gravity="center"
android:layout_alignParentRight="true"
android:layout_marginRight="11dp"
android:textColor="@color/enable_right_title"
android:textSize="15sp"
tools:text="假文字"
/>
</RelativeLayout>
</FrameLayout>
这是 android 工作室的错误还是什么?
xml 级别用标签
包含您的 xml 根目录 <?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
</data>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include
android:id="@+id/topBar"
layout="@layout/view_title"/>
</layout>
我什么也没做,它会自动运行。我确实做了清理、重建、重启 Android 工作室……当时做了一些事情,但没有用。也许 link 另一个 class 中的另一个布局会触发一些东西,只需在引擎盖下修复它,因为我搁置了这个问题并继续前进。
在我的例子中,我包含了另一个模块的布局,无法通过绑定访问包含的布局中的内部视图,问题是我没有在包含 [= 的模块中启用 viewBinding 16=] 我想包含的文件,所以添加
buildFeatures {
viewBinding true
}
那个模块的 gradle.build
帮我修好了!