Sto cercando di associare un valore booleano che indica a ImageView se le dimensioni dello schermo sono piccole, quindi si restringe se ho bisogno di più spazio per altri componenti. Sto usando il DataBinding Library per farlo.Come associare layout_width e layout_height utilizzando l'associazione dati in Android
mio layout cui larghezza e altezza dipende da questa booleana:
...
<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"/>
...
Se cerco solo di costruire il mio progetto come questo, il compilatore dice layout_width non può accettare il tipo float. Va bene, io uso la classe BindingAdapter per creare un galleggiante entrare per gli attributi di layout, come segue:
...
@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);
}
...
che permette il mio progetto di costruire. Ma quando il layout è finalmente reso, cado nella seguente eccezione:
java.lang.RuntimeException: Binary XML file line #21: You must supply a layout_width attribute.
Solo per informazioni, le mie dimensioni sono impostate in unità dp, come segue:
<dimen name="img_small_screen_size">100dp</dimen>
<dimen name="img_big_screen_size">208dp</dimen>
Qualcuno sa come si può Sovrascrivo l'attributo layout_width in modo da poter utilizzare direttamente il database con le dimensioni?
È anche possibile utilizzare "android: layout_width". Non devi usare il tuo spazio dei nomi. –
è vero, ho appena modificato la mia risposta –
Ora la tua risposta è la stessa della domanda – Bolein95