如何通过包含布局的数据绑定在dp中传递Dimension?

时间:2019-05-03 09:02:29

标签: android include android-databinding

我正在尝试为包含的布局传递paddingTop,但找不到方法。我尝试传递在资源文件中定义的dimen,将int变量类型放入int并传递dp,我发现它起作用的唯一方法是将变量定义为int并传递int。

这是包含的布局:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<data>

    <import type="android.view.View" />

    <variable
        name="image"
        type="android.graphics.drawable.Drawable" />

    <variable
        name="notification"
        type="int" />
    <variable
        name="paddingTop"
        type="androidx.annotation.Dimension" />

</data>

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:paddingTop="@{paddingTop}"
        android:layout_gravity="center">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingEnd="7dp"
            android:paddingBottom="7dp"
            tools:src="@drawable/ic_tab_home_selector"
            android:src="@{image}"/>

        <TextView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentBottom="true"
            android:background="@drawable/tab_notification_circle"
            android:fontFamily="@font/muli"
            android:gravity="center"
            android:text="@{String.valueOf(notification)}"
            android:textColor="@android:color/white"
            android:textSize="10sp"
            android:visibility="@{notification > 0 ? View.VISIBLE : View.GONE}" />


    </RelativeLayout>
</FrameLayout>

这就是我尝试传递尺寸的方式:

 <include
            android:id="@+id/tab_home"
            layout="@layout/layout_tab_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            app:notification="@{1}"
            app:paddingTop="@{4dp}"
            app:image="@{@drawable/ic_tab_home_selector}"/>

0 个答案:

没有答案