Vista personalizada (extendiendo LinearLayout) la propiedad "perder peso"
Así que .. Estoy definiendo una vista personalizada / diseño que se ve como sigue:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:weightSum="3"> <Button android:id="@+id/option_a" style="?android:selectableItemBackground" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="One" android:background="?android:selectableItemBackground" android:textAppearance="?android:attr/textAppearanceButton" android:textColor="@android:color/secondary_text_dark" /> <Button android:id="@+id/option_b" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Two" android:background="?android:selectableItemBackground" android:textColor="@android:color/holo_red_dark" android:textAppearance="?android:attr/textAppearanceButton" /> <Button android:id="@+id/option_c" style="?android:selectableItemBackground" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Three" android:background="?android:selectableItemBackground" android:textAppearance="?android:attr/textAppearanceButton" android:textColor="@android:color/secondary_text_dark" /> </LinearLayout>
Resultado:
- Disposición de Android: dos vistas contiguas, de igual anchura, utilizan el ancho total de la pantalla
- Android - Cómo almacenar una información oculta extra (s) (por etiqueta) en el diseño
- Cómo obtener la altura en píxeles de LinearLayout con layout_weight
- fije el ancho y la altura como porcentaje en el diseño relativo
- ¿Qué es android: weightSum en android, y cómo funciona?
Pero entonces agrego mi opinión de encargo en otra disposición como sigue:
<com.xxx.xxx.xxx.ThreeStatePreference android:id="@+id/mode" android:layout_width="match_parent" android:layout_height="wrap_content"/>
Resultado:
Parece que es completamente ignorar el "peso" de la propiedad. ¿Qué estoy haciendo mal?
PD: He encontrado una solución de código:
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ super.onMeasure(widthMeasureSpec, heightMeasureSpec); int wspec = MeasureSpec.makeMeasureSpec(getMeasuredWidth()/getChildCount(), MeasureSpec.EXACTLY); int hspec = MeasureSpec.makeMeasureSpec(getMeasuredHeight(), MeasureSpec.EXACTLY); for(int i=0; i<getChildCount(); i++){ View v = getChildAt(i); v.measure(wspec, hspec); } }
Pero me gustaría saber si esto es posible hacer usando el XML.
- División de pantalla dinámica de Android
- Linear Layout - Diferencia entre el peso y FILL_PARENT
- Android cómo mostrar 2 listas en una actividad una tras otra
- ¿Cómo alinear los elementos horizontalmente dentro de un LinearLayout?
- SetSelection en un spinner se bloquea cuando layout_weight se asigna a spinner
- Cómo actualizar match_parent en un linearLayout después de usar setRotation?
- LinearLayout con LayoutWeight no funciona