我正在尝试为包含的布局传递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}"/>