web-dev-qa-db-fra.com

Comment diviser l'écran avec deux LinearLayouts égaux?

Je veux partager un écran pour mon application avec deux LinearLayouts. Quels paramètres dois-je utiliser pour effectuer un fractionnement exact en deux parties égales - le premier LinearLayout en haut et le second juste en dessous.

57
Eugene

Utilisez le layout_weight attribut. La disposition ressemblera à peu près à ceci:

<LinearLayout Android:orientation="horizontal"
    Android:layout_height="fill_parent" 
    Android:layout_width="fill_parent">

    <LinearLayout 
        Android:layout_weight="1" 
        Android:layout_height="fill_parent" 
        Android:layout_width="0dp"/>

    <LinearLayout 
        Android:layout_weight="1" 
        Android:layout_height="fill_parent" 
        Android:layout_width="0dp"/>

</LinearLayout>
119
Konstantin Burov

Je réponds à cette question après 4-5 ans mais les meilleures pratiques pour le faire comme ci-dessous

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
   xmlns:tools="http://schemas.Android.com/tools"
   Android:layout_width="match_parent"
   Android:layout_height="match_parent"
   tools:context=".MainActivity">

   <LinearLayout
      Android:id="@+id/firstLayout"
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:layout_toLeftOf="@+id/secondView"
      Android:orientation="vertical"></LinearLayout>

   <View
      Android:id="@+id/secondView"
      Android:layout_width="0dp"
      Android:layout_height="match_parent"
      Android:layout_centerHorizontal="true" />

   <LinearLayout
      Android:id="@+id/thirdLayout"
      Android:layout_width="match_parent"
      Android:layout_height="match_parent"
      Android:layout_toRightOf="@+id/secondView"
      Android:orientation="vertical"></LinearLayout>
</RelativeLayout>

C'est la bonne approche car l'utilisation de layout_weight est toujours lourde pour les opérations de l'interface utilisateur. Fractionner la mise en page de manière égale à l'aide de LinearLayout n'est pas une bonne pratique

43
silwar

Juste le mettre là-bas:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#FF0000"
    Android:weightSum="4"
    Android:padding="5dp"> <!-- to show what the parent is -->
    <LinearLayout
        Android:background="#0000FF"
        Android:layout_height="0dp"
        Android:layout_width="match_parent"
        Android:layout_weight="2" />
    <LinearLayout
        Android:background="#00FF00"
        Android:layout_height="0dp"
        Android:layout_width="match_parent"
        Android:layout_weight="1" />
</LinearLayout>
15
star18bit

Afin de diviser l'interface utilisateur en deux parties égales, vous pouvez utiliser weightSum sur 2 dans le parent LinearLayout et attribuer layout_weight sur 1 à chacun comme indiqué au dessous de

<?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="match_parent"
    Android:orientation="horizontal"
    Android:weightSum="2">

        <LinearLayout
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:orientation="vertical">

        </LinearLayout>

       <LinearLayout
            Android:layout_width="0dp"
            Android:layout_height="match_parent"
            Android:layout_weight="1"
            Android:orientation="vertical">

       </LinearLayout>


</LinearLayout>
6
Njeru Cyrus