¿Definir un ancho de porcentaje para LinearLayout?

Quiero definir un ancho porcentual (70%) para un LinearLayout que contenga algunos botones, de forma que pueda centrarlo y para que los botones secundarios puedan fill_parent. Aquí hay una imagen que muestra lo que quiero decir:

ejemplo

Mi diseño actual se ve así:

            

El LinearLayout al que me refiero tiene el ID: linearLayout1. ¿Cómo hago esto?

Tienes que establecer la propiedad de peso de tus elementos. Cree tres RelativeLayouts como secundarios en su LinearLayout y configure los pesos 0.15, 0.70, 0.15. Luego agregue sus botones al segundo RelativeLayout (el que tiene un peso de 0.70).

Me gusta esto:

                

¿Por qué los pesos son 0.15, 0.7 y 0.15? Porque el peso total es 1 y 0.7 es 70% del total.

Resultado:

enter image description here

Editar: Gracias a @SimonVeloper por señalar que la orientación debe ser horizontal y no vertical y a @Andrew por señalar que los pesos pueden ser decimales en lugar de enteros.

Espero que esto pueda ayudar

            

(1) Establezca layout_width en “0dip” (2) Establezca el layout_height en .xx (% que desea)

Conozco otra solución que funciona con peso:

      

Creo que el enfoque de Emiam es correcto. Pero también estoy de acuerdo con Simon Veloper (uno de los comentaristas de la respuesta de Emiam): cuando necesitamos los botones en un 70% de ancho, debemos usar orientación horizontal para Linearlayout y establecer el ancho de cada Relativelayout en 0dip y su peso como se especifica. Sugiero esto versión :

     //This is where you add buttons. You can make them "fill_parent".     

Como última actualización de Android en 2015, Google ha incluido una biblioteca de soporte porcentual

com.android.support:percent:23.1.0

Puede referirse a este sitio, por ejemplo, de usarlo

https://github.com/JulienGenoud/android-percent-support-lib-sample

Gradle:

 dependencies { compile 'com.android.support:percent:22.2.0' } 

En el diseño:

      

No puede definir ancho / alto / márgenes / … usando porcentajes en su XML. Pero lo que querrías usar es el atributo “peso”, que es, IMO, lo más parecido.

Otro método sería establecer los tamaños mediante progtwigción después de inflar el diseño en el código, obteniendo el tamaño de la pantalla y calculando los márgenes necesarios.

Usar una nueva biblioteca de soporte porcentual

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

Ver ejemplo abajo

    

Para más información Tutorial1 Tutorial2 Tutorial3

* Puede usar propiedades layout_weight . Si desea obtener el 70% del ancho principal, debe establecer el valor de propiedad de layout_width niño 0dp, como android:layout_width="0dp" *

Resolví un problema similar aplicando algo de relleno al LinearLayout así:

     

Esto probablemente no le dará un porcentaje exacto, pero puede graduarse fácilmente y evitar elementos de diseño innecesarios adicionales.

Google presentó una nueva API llamada PercentRelativeLayout

Agregar dependencia de comstackción como

compile ‘com.android.support:percent:22.2.0’

en que PercentRelativeLayout es lo que podemos hacer por ciento de diseño