Disposición de ancho de porcentaje de Android

Necesito establecer el ancho de mi vista como 50% del ancho de la pantalla y luego centrar esta vista horizontalmente, mientras que potencialmente tener uno o más botones que pueden aparecer adjunto a la izquierda o el lado derecho de la pantalla.

Estoy utilizando un diseño relativo para que pueda colocar un diseño lineal con pesas para obtener mi 50% centrado al colocar cualquier botón en la parte superior de ese LL conectado al borde izquierdo o derecho de la RL. Sin embargo, este diseño falta la barra media azul. Si establezco el layout_weight de la vista media a 1 obtengo 3 barras de igual tamaño.

<RelativeLayout android:layout_width="match_parent" android:layout_height="48dp"> <LinearLayout android:id="@+id/stupid_android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" > <View android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#FF0000" android:layout_weight="1" /> <View android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#0000FF" android:layout_weight="2" /> <View android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#00FF00" android:layout_weight="1" /> </LinearLayout> </RelativeLayout> 

Debe establecer el ancho de la vista a 0dip

 <RelativeLayout android:layout_width="match_parent" android:layout_height="48dp"> <LinearLayout android:id="@+id/stupid_android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" > <View android:layout_width="0dip" android:layout_height="match_parent" android:background="#FF0000" android:layout_weight="1" /> <View android:layout_width="0dip" android:layout_height="match_parent" android:background="#0000FF" android:layout_weight="2" /> <View android:layout_width="0dip" android:layout_height="match_parent" android:background="#00FF00" android:layout_weight="1" /> </LinearLayout> </RelativeLayout> 

Puede lograr esto con la nueva biblioteca porcentual:

https://developer.android.com/tools/support-library/features.html#percent

Haciendo algo como esto:

 <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="48dp"> <View android:layout_width="0dp" android:layout_height="match_parent" android:background="#FF0000" app:layout_widthPercent="25%" /> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" android:background="#0000FF" android:centerHorizontal="true" app:layout_marginLeftPercent="25%" app:layout_widthPercent="50%" /> <View android:layout_width="0dp" android:layout_height="match_parent" android:alignParentRight="true" android:background="#00FF00" app:layout_marginLeftPercent="75%" app:layout_widthPercent="25%" /> </android.support.percent.PercentRelativeLayout> 

Utilice una nueva biblioteca de soporte porcentual.

 compile 'com.android.support:percent:24.0.0' 

Ejemplo:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main" android:layout_width="fill_parent" android:layout_height="fill_parent"> <android.support.percent.PercentRelativeLayout android:layout_width="match_parent" android:layout_height="48dp" > <View android:layout_height="match_parent" android:layout_weight="1" android:background="#FF0000" app:layout_widthPercent="33%" /> <View android:layout_height="match_parent" android:layout_weight="2" android:background="#0000FF" app:layout_marginLeftPercent="33%" app:layout_widthPercent="33%" /> <View android:layout_height="match_parent" android:layout_weight="1" android:background="#00FF00" app:layout_marginLeftPercent="66%" app:layout_widthPercent="33%" /> </android.support.percent.PercentRelativeLayout> </LinearLayout> 

Para más información Android Doc

* Para Muestra y Tutorial * Tutorial1 Tutorial2 Tutorial3

Si entiendo correctamente, necesitas esto:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="48dp" > <LinearLayout android:id="@+id/stupid_android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" > <View android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#FF0000" android:layout_weight="1" ></View> <View android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#0000FF" android:layout_weight="1.5" ></View> <View android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#00FF00" android:layout_weight="1.5" ></View> </LinearLayout> </RelativeLayout> 
  • Vinculación de datos de Android en vistas individuales agregadas a LinearLayout mediante programación?
  • ¿Se puede omitir OnMeasure al agregar una vista a un grupo de vistas?
  • Android - Ellipsize con la vista alineada a la derecha
  • Android personalizado RatingBar imagen de los artefactos
  • Cómo cambiar el diseño del widget de fondo mediante programación
  • Android: Cómo configurar las variables dimen de XML mediante programación
  • Herramienta para diseñar Layout para Android -apps en línea?
  • Cómo cargar programaticamente un archivo XML de diseño en Android?
  • ¿Cómo mostrar los datos como barra de progreso y círculo de progresión del porcentaje de rueda?
  • Problemas de representación de previsualización de diseño en android studio (Android Studio 1.2)
  • ¿Cómo hago que las vistas llenen el ancho completo de sus padres en mi aplicación para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.