画面サイズが小さい場合はImageViewに示すブール値をバインドしようとしています。私はDataBinding Libraryを使っています。幅と高さがAndroidでデータバインディングを使用してlayout_widthとlayout_heightをバインドする方法
私のレイアウトはすべて、このブール値に依存します。
...
<data>
...
<variable name="smallScreen" type="boolean"/>
...
</data>
...
<ImageView
android:layout_width="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
android:layout_height="@{smallScreen ? @dimen/img_small_screen_size : @dimen/img_big_screen_size}"
android:layout_gravity="center_horizontal"
android:contentDescription="@{message}"
android:src="@{image}"
android:scaleType="center"
tools:src="@drawable/img_message_private"/>
...
私はちょうどこのように私のプロジェクトをビルドしようとした場合、コンパイラはlayout_widthがfloat型を受け入れることができないと言います。十分なフェア、私は次のように、フロートがレイアウト属性の入力を作成するBindingAdapterクラスを使用します。
私のプロジェクトを構築することができます...
@BindingAdapter("android:layout_width")
public static void setLayoutWidth(View view, float width) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = (int) width;
view.setLayoutParams(layoutParams);
}
@BindingAdapter("android:layout_height")
public static void setLayoutHeight(View view, float height) {
ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
layoutParams.height = (int) height;
view.setLayoutParams(layoutParams);
}
...
。しかし、レイアウトが最終的にレンダリングされているとき、私は次の例外に該当し、次のよう
java.lang.RuntimeException: Binary XML file line #21: You must supply a layout_width attribute.
情報だけのために、私の寸法は、DP単位で設定されています
<dimen name="img_small_screen_size">100dp</dimen>
<dimen name="img_big_screen_size">208dp</dimen>
誰かができる方法を知っていますlayout_width属性をオーバーライドするので、次元を使用して直接データバインドを使用できますか?
「android:layout_width」も使用できます。独自の名前空間を使用する必要はありません。 –
それは本当です、ちょうど私の答え –
を編集しましたあなたの答えは質問と同じに見えます – Bolein95