Android 如何将屏幕垂直分成三部分?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11988994/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 09:23:34  来源:igfitidea点击:

How to divide screen into three parts vertically?

androidandroid-layoutandroid-intentandroid-emulatorandroid-widget

提问by Sushant Bhatnagar

I have screen with ScrollViewand three different LinearLayouts.

我有屏幕ScrollView和三个不同的LinearLayouts

One LinearLayoutcontains a Spinnerand second contains ListViewand third contains two Buttons( horizontal ).

一个LinearLayout包含一个Spinner,第二个包含ListView,第三个包含两个Buttons(水平)。

I want to display a screen that contains 3 LinearLayoutsalways displayed at bottom of screen and 1 LinearLayoutalways displayed on top. In middle part , i want to display ListViewcontent. So that on whole screen there is no blank space present.

我想显示一个屏幕,其中 3 个LinearLayouts始终显示在屏幕底部,1 个LinearLayout始终显示在顶部。在中间部分,我想显示ListView内容。所以在整个屏幕上没有空白空间。

I want to create screen for multiple devices which has different sizes.

我想为具有不同尺寸的多个设备创建屏幕。

     <?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:background="@drawable/backrepeat"
android:orientation="vertical" >

<include
    android:id="@+id/include1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    layout="@layout/actionbar" >
</include>

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="horizontal" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:padding="10dp" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight=".2"
            android:background="@drawable/rounded_border"
            android:orientation="vertical"
            android:padding="15dp" >

            <TextView
                android:id="@+id/tvDiaryData"
                style="@style/greenstyle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/heading"
                android:gravity="center_horizontal"
                android:text="@string/tvDiaryData" >
            </TextView>

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="10dp"
                android:gravity="center_horizontal" >
            </TextView>

            <Spinner
                android:id="@+id/spDiaryAllBooking"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:prompt="@string/select_diaryallbooking" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.6"
            android:background="@drawable/layerlist"
            android:orientation="vertical"
            android:paddingBottom="5dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:paddingTop="5dp" >

            <ListView
                android:id="@+id/lvDiaryBooking"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:divider="#636466"
                  android:layout_weight="1"
                android:dividerHeight="1dip"
                android:scrollbarStyle="outsideOverlay"
                android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight=".2"
            android:background="@drawable/rounded_border"
            android:orientation="horizontal"
            android:padding="10dp" >

            <Button
                android:id="@+id/btnDiaryBook"
                style="@style/greenButton"
                  android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"                    
                android:onClick="btnDiaryBook_Click"
                android:text="@string/btnBook" >
            </Button>

            <Button
                android:id="@+id/btnDiaryBalance"
                style="@style/greenButton"
                  android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_marginLeft="10dp"                 
                android:onClick="btnDiaryBalance_Click"
                android:text="@string/btnDiaryBalance" >
            </Button>
        </LinearLayout>
    </LinearLayout>
         </ScrollView>

     </LinearLayout>

Screen Layout with what I want:

我想要的屏幕布局:

enter image description here

enter image description here

Current Layout - This give blank space on below of screen on tablet

Current Layout - This give blank space on below of screen on tablet

回答by prolink007

This is a very simple solution. You should be able to use this in your current layout.

这是一个非常简单的解决方案。您应该能够在当前布局中使用它。

Just populate the LinearLayoutswith your desired contents.

只需填充LinearLayouts您想要的内容。

<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/ll1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" >
    </LinearLayout>

</LinearLayout>

Screen shot of the code posted above with colors showing the different layout areas.

上面发布的代码的屏幕截图,用颜色显示不同的布局区域。

enter image description here

enter image description here