2011-05-13 10 views

Respuesta

32

Realmente no soporta la configuración de los valores por ciento (a excepción de algunos de los archivos XML de animación parecen) Si usted está empeñado en el uso de un porcentaje de la mejor manera que se me ocurre es de getWidth llamada Java y luego getHeight multiplíquelos por su decimal y establezca el resultado con setMargin(), o setPadding().

29

Esto es posible en XML envolviendo su EditarTexto en el interior de un LinearLayout:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:weightSum="10" 
    android:gravity="center" 
    >  

    <EditText 
     android:layout_height="wrap_content" 
     android:layout_width="0dip" 
     android:layout_weight="8" 
     /> 

</LinearLayout> 
+0

y para'height' ¿? –

+0

no funcionará si tiene solo 1 componente en 'LinearLayout'. – Raptor

+0

esto funciona para mí con solo un ListView dentro de LinearLayout y con o sin la adición de 'android: orientation =" horizontal "' en LinearLayout con 'minSdkVersion = 16'. Para la altura, solo tendrías layout_height = – rockhammer

22

Editar: Los diseños de esta respuesta ahora están en desuso. Use la solución que Eugene Brusov propuso. Además, gracias chancyWu por el comentario.


Ahora hay una manera mejor que salió con el apoyo de la biblioteca versión 23.0.0 (sobre el tiempo, ¿verdad?). Ahora puede usar PercentFrameLayout o PercentRelativeLayout.

Si quería la EditarTexto a ser del 80% del ancho de la pantalla con un margen de 10% a cada lado, el código se vería así:

<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="match_parent"> 

    <EditText 
     android:layout_height="wrap_content" 
     app:layout_widthPercent="80%" 
     app:layout_marginStartPercent="10%" 
     app:layout_marginEndPercent="10%"/> 

</android.support.percent.PercentRelativeLayout> 

También puede echar un vistazo a PercentLayoutHelper.PercentLayoutParams

+0

Desaprobado desde el nivel de API 26.1.0 – chancyWu

1

Es posible con Guideline introducido en ConstraintLayout.

Por ejemplo, usted puede colocar su parte superior EditarTexto a 25% de la altura de la pantalla y la izquierda y la derecha en el 20% del ancho de la pantalla:

Layout Editor

Aquí está la fuente de diseño:

<android.support.constraint.ConstraintLayout 
    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="match_parent"> 

    <EditText 
     android:id="@+id/editText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:text="Name" 
     app:layout_constraintLeft_toLeftOf="@+id/left_guideline" 
     app:layout_constraintRight_toLeftOf="@+id/right_guideline" 
     app:layout_constraintTop_toTopOf="@+id/top_guideline" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/top_guideline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:layout_constraintGuide_percent="0.25" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/left_guideline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.2" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/right_guideline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     app:layout_constraintGuide_percent="0.8" /> 

</android.support.constraint.ConstraintLayout> 
Cuestiones relacionadas