使用数据绑定文本时,layout_weight不起作用

时间:2019-02-10 04:21:13

标签: android data-binding android-layout-weight

首先,对我的英语不好感到抱歉
我有一个像这样的xml布局的recyclerview

<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>

    <variable
        name="township"
        type="com.test.feature.Area" />

</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/white"
    android:orientation="horizontal"
    android:paddingTop="@dimen/_10sdp"
    android:paddingBottom="@dimen/_10sdp">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@{township.name}"
        android:textColor="@color/agent_list_gray_1"
        android:textSize="@dimen/_15ssp" />

    <android.support.v7.widget.AppCompatRadioButton
        android:id="@+id/btnRadio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0"/>
</LinearLayout>

我将文本设置为Adapter类中的textview,这就是我想要的 what I want

但是,如果我在此行上使用数据绑定

  

android:text =“ @ {township.name}”

我知道了 layout_weight is incorrect

那么有人知道我的代码出了什么问题吗?

还有另一种方法来存档这种用户界面,但我真的很想知道为什么它不起作用

3 个答案:

答案 0 :(得分:0)

是否可以不使用RelativeLayout并将Textview设置为parentLeft,将EditTextview设置为parentRight来设置间距?

答案 1 :(得分:0)

这很奇怪!因为我实现了您的代码,并且可以正常工作。也许尝试将其包装在与下面相同的父视图中(我是这样做的):

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/backgroundOrange"
        android:orientation="horizontal"
        android:paddingTop="@dimen/_10sdp"
        android:paddingBottom="@dimen/_10sdp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@{township.name}"
            android:textColor="@color/textPrimary"
            android:textSize="15dp"/>

        <android.support.v7.widget.AppCompatRadioButton
            android:id="@+id/btnRadio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"/>
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

让我知道它是否有效。

答案 2 :(得分:0)

解决方案很简单。

在对布局进行充气操作时,如果您的布局位于另一个布局内,请在inflate方法中将容器布局作为父级传递给容器。

如果不这样做,则所有以layout开头的属性都将无效。

您的膨胀代码应如下所示。

binding = FragmentTestBinding.inflate(layoutInflator,parent,false)