Android:如何将LinearLayout分成两个完全相同的大小?

时间:2011-05-11 16:43:41

标签: android

我有以下布局:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#FFFFFF"
  android:orientation="horizontal"
  android:weightSum="2">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="ch.lexs.view.LawList"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    </fragment>

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="ch.lexs.view.ParagraphList"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    </fragment>

</LinearLayout>

我的目的是将LinearLayout分成两个完全相同的部分。我认为这可以通过使用重量来完成。但第二个片段更小。我做错了什么?

6 个答案:

答案 0 :(得分:9)

尝试将两者的宽度设置为“fill_parent”。

答案 1 :(得分:9)

此代码可能会帮助您

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    tools:context=".MainActivity" >

    <fragment
        android:id="@+id/mainFragment"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        class="com.lmhuan.weatherapp.helper.MainFragment" >
    </fragment>

    <fragment
        android:id="@+id/detailFragment"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent"
        class="com.lmhuan.weatherapp.helper.DetailFragment" >
    </fragment>

</LinearLayout>

答案 2 :(得分:2)

您将两个片段的layout_height设置为"fill_parent"也许没有它可以尝试?

答案 3 :(得分:1)

您必须关注线性布局的weightSum属性。然后是内部视图的layout_weightlayout_heightlayout_width属性。只需将布局划分为任何比例即可。

如果要将布局划分为相同大小的两个部分,则必须将layout_width属性设置为两个布局的0dp,并在主布局中将layout_weight设置为1 。然后将weightSum设置为父布局的2

可以应用相同的概念将布局划分为任何比率。将所有内部layout_weight值总和设置为weightSum。然后根据您要划分的方向将layout_widthlayout_height设置为0dp。以下是此问题的解决方案布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    tools:context=".MainActivity"
    android:weightSum="2">

    <fragment
        android:id="@+id/mainFragment"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent">
    </fragment>

    <fragment
        android:id="@+id/detailFragment"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="match_parent">
    </fragment>

</LinearLayout>

这是一个将LinearLayout垂直划分为1,3,2比例的示例。

<?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="vertical"
    android:weightSum="6">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@android:color/white">

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="3"
        android:background="@android:color/black">
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:background="@android:color/white">
    </RelativeLayout>

</LinearLayout>

答案 4 :(得分:0)

如果您希望布局具有相同的高度,请尝试设置android:layout_height =“0”;如果您想要相同的宽度,请尝试设置android:layout_width =“0”。

答案 5 :(得分:0)

不推荐使用

fill_parent,因此您可以使用match_parent