linearlayout - android: layout_height 50% del tamaño de la pantalla
guideline android 50% (9)
Hola a todos Acabo de implementar un ListView dentro de LinearLayout, pero necesito definir el alto de LinearLayout (tiene que ser el 50% de la altura de la pantalla).
<LinearLayout
android:id="@+id/widget34"
android:layout_width="300px"
android:layout_height="235px"
android:orientation="vertical"
android:layout_below="@+id/tv_scanning_for"
android:layout_centerHorizontal="true">
<ListView
android:id="@+id/lv_events"
android:textSize="18sp"
android:cacheColorHint="#00000000"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_scanning_for"
android:layout_centerHorizontal="true">
</ListView>
</LinearLayout>
¿Es eso posible?
Hice algo similar para un botón y un EditText, pero parece que no funciona en Layouts.
Este es mi Código:
//capture the size of the devices screen
Display display = getWindowManager().getDefaultDisplay();
double width = display.getWidth();
//my EditText will be smaller than full screen (80%)
double doubleSize = (width/5)*4;
int editTextSize = (int) doubleSize;
//define the EditText
userName = (EditText) this.findViewById(R.id.userName);
password = (EditText) this.findViewById(R.id.password);
//set the size
userName.setWidth(editTextSize);
password.setWidth(editTextSize);
¡Gracias! :)
Deberías hacer algo como eso:
<LinearLayout
android:id="@+id/widget34"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_below="@+id/tv_scanning_for"
android:layout_centerHorizontal="true">
<ListView
android:id="@+id/lv_events"
android:textSize="18sp"
android:cacheColorHint="#00000000"
android:layout_height="1"
android:layout_width="fill_parent"
android:layout_weight="0dp"
android:layout_below="@+id/tv_scanning_for"
android:layout_centerHorizontal="true"
/>
</LinearLayout>
También use dp en lugar de px o lea sobre esto here .
Es muy fácil si quieres dividir tu pantalla en dos partes verticalmente (arriba 30% + abajo70%)
<LinearLayout
android:id="@+id/LinearLayoutTop"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2">
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayoutBottom"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
Esta es mi android: layout_height = 50% de actividad:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/alipay_login"
style="@style/loginType"
android:background="#27b" >
</LinearLayout>
<LinearLayout
android:id="@+id/taobao_login"
style="@style/loginType"
android:background="#ed6d00" >
</LinearLayout>
</LinearLayout>
estilo:
<style name="loginType">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_weight">0.5</item>
<item name="android:orientation">vertical</item>
</style>
Establezca su layout_height="0dp"
*, agregue una View
blanco debajo de él (o ImageView
blanco o solo un FrameLayout
) con un layout_height
también igual a 0dp
, y configure ambas vistas para que tengan un layout_weight="1"
Esto estirará cada Vista por igual a medida que llena la pantalla. Como ambos tienen el mismo peso, cada uno tomará el 50% de la pantalla.
* Vea el comentario de adamp sobre por qué funciona y otras cositas realmente útiles.
Este tipo de trabajo funcionó para mí. Aunque FAB no flota de forma independiente, pero ahora no se empuja hacia abajo.
Observe los pesos dados dentro del LinearLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/andsanddkasd">
<android.support.v7.widget.RecyclerView
android:id="@+id/sharedResourcesRecyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="bottom|right"
android:src="@android:drawable/ic_input_add"
android:layout_weight="1"/>
</LinearLayout>
Espero que esto ayude :)
Esto es fácil de hacer en xml. Configure su contenedor superior para que sea LinearLayout y configure el atributo de orientación como lo desee. Luego, dentro de ese lugar dos lineales que tienen "fill parent" en ancho y alto. Finalmente, establezca el atributo de ponderación de esos dos lineales en 1.
Para asegurarnos de que el alto de una vista es el 50% de la pantalla, podemos crear dos LinearLayouts sub en LinearLayout. Cada uno de los niños LinearLayout debe tener " android: layout_weight " de 0.5 para cubrir la mitad de la pantalla
el padre LinearLAyout debe tener " android: orientation " en vertical
.
.
aquí está el código para su referencia ... este código contiene dos botones de altura, la mitad de la pantalla
<LinearLayout
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_weight="0.5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:padding="10dp"
android:layout_weight="0.5"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="button1"
android:id="@+id/button1"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
/>
<Button
android:padding="10dp"
android:layout_weight="0.5"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="button2"
android:id="@+id/button2"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
/>
</LinearLayout>
<LinearLayout
android:layout_weight="0.5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
Para lograr esta hazaña, defina un diseño lineal externo con un weightSum={amount of weight to distribute}
.
define la suma de peso máxima. Si no se especifica, la suma se calcula sumando el layout_weight de todos los elementos secundarios. Esto se puede usar, por ejemplo, para dar a un único hijo el 50% del espacio total disponible, dándole un layout_weight de 0.5 y configurando weightSum en 1.0. Otro ejemplo sería weightSum = 2, y si los dos hijos configuran layout_weight=1
entonces cada uno obtendría el 50% del espacio disponible.
WeightSum depende de la cantidad de elementos secundarios en el diseño principal.
la mejor manera es usar
layout_height = "0dp" layout_weight = "0.5"
por ejemplo
<WebView
android:id="@+id/wvHelp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5" />
<TextView
android:id="@+id/txtTEMP"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.5"
android:text="TextView" />
WebView, TextView tienen el 50% de la altura de la pantalla