本文介绍了视图在Android数据绑定中必须存在标签错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的屏幕有两种布局。在为移动设备设置布局时,活动可以正常工作,但在为平板设备设置布局时会导致错误。主要问题是:
I've two layouts for a screen. Activity works fine while setting a layout for Mobile device but it's causing error while setting layout for tablet device. The main issue is:
不过,在移动设备上安装应用程序时,我不会遇到问题。
Though, I don't face the problem when I install app on mobile device.
这样,我在活动上设置布局:
val resetPasswordActivityBinding = DataBindingUtil.setContentView<ResetPasswordActivityBinding>(this,
R.layout.reset_password_activity)
resetPasswordActivityBinding.resetPasswordViewModel = resetPasswordViewModel
这是我的平板电脑屏幕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">
<data>
<variable
name="resetPasswordViewModel"
type="com.bhi.salesarchitect.user.password.reset.ResetPasswordViewModel" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/app_toolbar_layout"
app:appTheme="@{resetPasswordViewModel.appTheme}"
app:appToolbar="@{resetPasswordViewModel.appToolbar}" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_splash"
android:contentDescription="@null"
android:scaleType="centerCrop" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imv_builder_logo_change_pswd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_135"
android:layout_marginBottom="@dimen/space_xxlarge"
android:layout_weight=".5"
android:contentDescription="@null"
android:src="@drawable/ic_logo" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/dp_80"
android:layout_weight=".4">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/space_normal"
android:layout_marginEnd="@dimen/space_normal"
android:contentDescription="@null"
android:scaleType="fitXY"
android:src="@drawable/bg_white_shadow" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingStart="@dimen/space_xxxlarge"
android:paddingEnd="@dimen/space_xxxlarge">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_55"
android:layout_marginBottom="@dimen/space_small"
android:gravity="center"
android:text="@string/a_one_time_password_reset_code_has_been_sent_to_your_email"
android:textColor="@color/blue_dark_main"
android:textSize="@dimen/text_size_normal" />
<EditText
android:id="@+id/et_otp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/space_normal"
android:background="@drawable/shape_rounded_white"
android:drawablePadding="@dimen/space_small"
android:hint="@string/password_reset_code"
android:inputType="textPersonName"
android:paddingStart="@dimen/space_small"
android:paddingTop="@dimen/space_xsmall"
android:paddingEnd="@dimen/space_xxsmall"
android:paddingBottom="@dimen/space_xsmall"
android:textColor="@android:color/black"
android:textSize="@dimen/sp_15" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/space_small"
android:background="@drawable/shape_rounded_white"
android:drawableStart="@drawable/ic_password"
android:drawablePadding="@dimen/space_small"
android:hint="@string/new_password"
android:inputType="textPassword"
android:maxLength="@integer/max_password_length"
android:paddingStart="@dimen/space_small"
android:paddingTop="@dimen/space_xsmall"
android:paddingEnd="@dimen/space_xxsmall"
android:paddingBottom="@dimen/space_xsmall"
android:textColor="@android:color/black"
android:textSize="@dimen/sp_15" />
<EditText
android:id="@+id/et_confirm_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/space_small"
android:background="@drawable/shape_rounded_white"
android:drawableStart="@drawable/ic_password"
android:drawablePadding="@dimen/space_small"
android:hint="@string/confirm_new_password"
android:imeOptions="actionDone"
android:inputType="textPassword"
android:maxLength="@integer/max_password_length"
android:paddingStart="@dimen/space_small"
android:paddingTop="@dimen/space_xsmall"
android:paddingEnd="@dimen/space_xxsmall"
android:paddingBottom="@dimen/space_xsmall"
android:textColor="@android:color/black"
android:textSize="@dimen/sp_15" />
<Button
android:id="@+id/bt_submit"
style="@style/ButtonNormal"
android:layout_marginTop="@dimen/space_normal"
android:backgroundTint="@color/blue_dark_main"
android:onClick="@{()-> resetPasswordViewModel.onSubmitClick()}"
android:text="@string/submit"
android:textColor="@android:color/white" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</layout>
推荐答案
在遇到以下情况时我就遇到了这个问题:
I ran into this when I had:
- 定义布局资源的库模块
- 依赖于该库模块定义相同布局的应用程序模块资源
- 已为数据绑定设置了库布局资源(例如,根
< layout>
元素),但是应用模块的该版式资源的版本不是
- A library module defining a layout resource
- An app module that depended upon that library module defining the same layout resource
- The library layout resource was set up for data binding (e.g., root
<layout>
element), but the app module's edition of that layout resource was not
在我来说,应用程序模块的版式是我创建项目时遗留下来的。删除它可以解决问题。
In my case, the app module's layout was left over from when I created the project. Removing it cleared up the problem.
这篇关于视图在Android数据绑定中必须存在标签错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!