web-dev-qa-db-ja.com

2つの等しいLinearLayoutsで画面を分割する方法は?

2つのLinearLayoutsでアプリの画面を分割したい。 2つの等しい部分に正確に分割するために、どのパラメーターを使用する必要があります。最初のLinearLayoutは上部にあり、2番目はそのすぐ下にあります。

57
Eugene

使用 layout_weight属性。レイアウトはおおよそ次のようになります。

<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

4〜5年後にこの質問に答えていますが、これを行うためのベストプラクティスは以下のとおりです

<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>

layout_weightの使用はUI操作では常に重いため、これは正しいアプローチです。 LinearLayoutを使用してレイアウトを均等に分割することはお勧めできません

43
silwar

そこに置くだけ:

<?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

UIを2つの等しい部分に分割するために、親LinearLayoutで2のweightSumを使用して割り当てlayout_weight次のようにそれぞれ1

<?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