我试图绑定我的视图的宽度和高度,但我看不到问题在哪里。Android DataBinding layout_width:您必须提供layout_width attribut
我发现这对this google issue
为了实现这些为您的应用程序,创建一个绑定的适配器:
@BindingAdapter("android:layout_width") public static void setLayoutWidth(View view, int width) { LayoutParams layoutParams = view.getLayoutParams(); layoutParams.width = width; view.setLayoutParams(layoutParams); }
所以我创造了我的绑定适配器这样的:
public class SimpleBindingAdapter {
@BindingAdapter("android:layout_width")
public static void setLayoutWidth(View view, int width) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = width;
view.setLayoutParams(layoutParams);
}
@BindingAdapter("android:layout_height")
public static void setLayoutHeight(View view, int height) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = height;
view.setLayoutParams(layoutParams);
}
//Others methods...
}
然后尝试设置我的宽度和高度,如下所示:
<View
android:layout_width="@{paramsMessage.width}"
android:layout_height="@{paramsMessage.height}"
... />
其中paramsMessage.width是一个public int属性。
但我得到这个错误:
引起:了java.lang.RuntimeException:二进制XML文件行#25:您 必须提供layout_width属性。 在 android.content.res.TypedArray.getLayoutDimension(TypedArray.java:607) 在 android.view.ViewGroup $ LayoutParams.setBaseAttributes(ViewGroup.java:6761) 在 android.view.ViewGroup $ MarginLayoutParams。( ViewGroup.java:6930) 在 android.widget.RelativeLayout $的LayoutParams。(RelativeLayout.java:1244) 在 android.widget.RelativeLayout.generateLayoutParams(RelativeLayout.java:1084) 在 android.widget.RelativeLayout。 generateLayoutParams(RelativeLayout.java:83) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:820) 在android.view.LayoutInflater.inflate(LayoutInflater.java:511) 在android.view.LayoutInflater.inflate(LayoutInflater.java:415) 在 android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116) 在 android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88) 在 be.standard.appbusiness.tutorials.home.TutorialHomeFragment.onCreateDialog(TutorialHomeFragment。 java:35) at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:308) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 在 android.support.v4 .app.BackStackRecord.run(BackStackRecord.java:738) 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 在 android.support.v4.app.FragmentController.execPendingActions(FragmentController .java:330) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity。的java:547) 在 android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1234) 在android.app.Activity.performStart(Activity.java:6258) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread。 Java的:2621) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 在android.app.ActivityThread.access $ 900(ActivityThread.java:172) 在 android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1422) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5832) at java.lang.reflect.Method.invoke(Native Method) at java .lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit。主要(ZygoteInit.java:1194)
我将不胜感激任何帮助,谢谢!
我试过但没有工作:/ – MHogge
不正确,数据和绑定适配器之间没有连接 – Shirane85