gpt4 book ai didi

android - 如何为 android :layout_marginLeft based LiveData in Android Studio? 绑定(bind)不同的值

转载 作者:行者123 更新时间:2023-12-05 00:19:03 29 4
gpt4 key购买 nike

代码 B 运行良好。aHomeViewModel.isHaveRecordLiveData<Boolean> ,希望设置不同的marginLeft基于 aHomeViewModel.isHaveRecord 的值.
Bur Code A 出现以下编译错误,我该如何解决?
找不到接受参数类型“float”的 的 setter
代码 A

<TextView
android:id="@+id/title_Date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@{aHomeViewModel.isHaveRecord? @dimen/margin1: @dimen/margin2 }"
/>

<dimen name="margin1">10dp</dimen>
<dimen name="margin2">5dp</dimen>
代码 B
 <TextView
android:id="@+id/title_Date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin1"
/>

<dimen name="margin1">10dp</dimen>
<dimen name="margin2">5dp</dimen>
顺便说一句,以下代码可以正常工作。
android:padding="@{aHomeViewModel.displayCheckBox? @dimen/margin1 : @dimen/margin2 }"

最佳答案

要使其正常工作,您必须定义一个自定义 @BindingAdapter :

public class BindingAdapters {
@BindingAdapter("marginLeftRecord")
public static void setLeftMargin(View view, boolean hasRecord) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
params.setMargins(
hasRecord ? (int) view.getResources().getDimension(R.dimen.margin1)
: (int) view.getResources().getDimension(R.dimen.margin2)
, 0, 0, 0);
view.setLayoutParams(params);
}
}
是否需要 LinearLayout.LayoutParams或其他取决于您 TextView 的父级。
要使用它,请将您的 xml 调整为:
<TextView
android:id="@+id/title_Date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
marginLeftRecord="@{aHomeViewModel.isHaveRecord}" />
测试和工作;)

关于android - 如何为 android :layout_marginLeft based LiveData<Boolean> in Android Studio? 绑定(bind)不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64673518/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com