[英]Set layout_margin using databinding
我在我的应用程序中使用数据构建,我是新手。 我无法更改 layout_marginLeft 代码。 我看过很多例子,但它们对我不起作用。 这是我在模型中的代码。
@BindingAdapter("android:layout_marginLeft")
public static void setLayoutMarginLeft(View view, float marginLeft) {
if (view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
p.setMargins((int) marginLeft, p.topMargin, p.rightMargin, p.bottomMargin);
view.requestLayout();
}
}
xml文件
<data>
<import type="android.view.View" />
<variable
name="viewModel"
type="com.aofled.test.window.activity.sleep.SleepActivityViewModel" />
</data>
<TextView
android:id="@+id/tv_sleep"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tap to screen....."
android:textColor="@color/selector_inactive"
android:textSize="48sp"
android:layout_marginLeft="@{viewModel.layout_marginLeft}"
/>
我无法构建该项目。 我写:
****/ data binding error ****msg:Could not find accessor com.aofled.test.window.activity.sleep.SleepActivityViewModel.layout_marginLeft file:C:\!work\kohote_ch_android 4\kohotehc_android\client\src\main\res\layout\activity_sleep.xml loc:26:45 - 26:71 ****\ data binding error ****
我应该改变什么才能使它工作?
好吧,我找到了解决我的问题的方法。 我希望有人会帮忙。
我的.xml
<data>
<import type="android.view.View" />
<variable
name="viewModel"
type="com.kohote.homecare.window.activity.sleep.SleepActivityViewModel" />
</data>
<TextView
android:id="@+id/tv_sleep"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sleep_mode_text"
android:textColor="@color/selector_inactive"
android:textSize="48sp"
app:layout_marginLeft="@{viewModel.marginLeft}"
/>
我的睡眠活动视图模型
public ObservableField<Float> marginLeft = new ObservableField<>();
@BindingAdapter({"bind:layout_marginLeft"})
public static void setLayoutMarginLeft(TextView view, float marginLeft) {
if (view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
p.setMargins((int) marginLeft, p.topMargin, p.rightMargin, p.bottomMargin);
view.requestLayout();
}
}
和我的二传手
marginLeft.set(100f, 900f);
这是一个工作版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.