将数据从一种布局传递到另一种

时间:2020-04-08 16:09:42

标签: android android-databinding

我试图通过传递数字键(即1-9)和数字下的一些字母(例如“ abc”,“ def”等)来重用键盘按钮。由于某些原因,我无法正常工作。在下面,您可以查看代码和我完成的所有操作。我已经在互联网上阅读了所有内容,但无法正常工作。

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable
            name="mainText"
            type="String"/>
        <variable
            name="subtitleText"
            type="String"/>
    </data>
    <FrameLayout android:layout_height="85dp"
        android:layout_width="85dp"
        android:background="@drawable/button_bg_round">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@{mainText}"
            android:textSize="44sp"
            android:fontFamily="@font/latoregular"
            android:gravity="center"
            android:paddingBottom="10dp"
            android:paddingRight="2dp"
            />
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@{subtitleText}"
            android:textSize="15sp"
            android:fontFamily="@font/latoregular"
            android:gravity="center"
            android:paddingTop="50dp"
            android:paddingRight="2dp"
            />

    </FrameLayout>
</layout>

我在这里重用该组件

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:bind="http://schemas.android.com/apk/res-auto">
...

 <include
            android:id="@+id/button_1"
            layout="@layout/keypad_layout"
            app:mainText="@{@string/keyboard_1}"
            bind:mainText ="@{@string/keyboard_1}"
            app:subtitleText="@{@string/keyboard_1_subtitle}"
            />
...
</layout>

最后,我添加了在build.gradle中启用的数据绑定。

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案-Include layout with custom attributes

为了使其起作用,您需要记住必须启用数据绑定,并且必须通过DataBindingUtil.inflate对其进行膨胀,而不仅仅是常规视图膨胀。但是,是的。