如何重写这个xml布局以使用更多RelativeLayout?

时间:2012-08-30 20:33:50

标签: android android-layout relativelayout textview

简单的问题。我有这个XML布局:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/plancus">

     <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LoggerContents"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:layout_above="@+id/ButtonsTopLine">
        <TextView
            android:id="@+id/leftpane"
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:ems="10"
            android:gravity="center"
            android:layout_weight="1" 
            android:text="@string/logger"/>
        <TextView
            android:id="@+id/rightpane"
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:gravity="top"
            android:freezesText="true"
            android:maxLines = "50"
            android:scrollbars = "vertical"
            android:layout_weight="2"/>
    </LinearLayout>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ButtonsTopLine"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_above="@+id/ButtonsBottomtLine">
        <Button
            android:id="@+id/askas2"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/askas2"
            android:onClick="rollLogger"/>
        <Button
             android:id="@+id/askas3"
             android:layout_width="0dip"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:text="@string/askas3"
             android:onClick="rollLogger"/>
        <Button
             android:id="@+id/askas4"
             android:layout_width="0dip"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:text="@string/askas4"
             android:onClick="rollLogger"/>
        <Button
             android:id="@+id/askas6"
             android:layout_width="0dip"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:text="@string/askas6"
             android:onClick="rollLogger"/>
    </LinearLayout>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ButtonsBottomtLine"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" 
        android:layout_alignParentBottom="true">
        <Button
           android:id="@+id/askas8"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="@string/askas8"
           android:onClick="rollLogger"/>
        <Button
           android:id="@+id/askas10"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="@string/askas10"
           android:onClick="rollLogger"/>
        <Button
           android:id="@+id/askas12"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="@string/askas12"
           android:onClick="rollLogger"/>
        <Button
           android:id="@+id/askas20"
           android:layout_width="0dip"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="@string/askas20"
           android:onClick="rollLogger"/>
    </LinearLayout>         
</RelativeLayout>

有没有办法更改它,因此不需要包含两个LinearLayout的第一个TextViews

第一个TextView是左窗格,而另一个是右窗格。最后一个应该比第一个更大(不一定是2:1)。 TextViews应填充按钮线性视图

的顶部到开头的所有空格

1 个答案:

答案 0 :(得分:0)

> Is there a way to change it so the first linear layout, which contains two textviews, is not needed?

yes, there is, 

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/plancus"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/ButtonsTopLine"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/ButtonsBottomtLine"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/askas2"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas2" />

        <Button
            android:id="@+id/askas3"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas3" />

        <Button
            android:id="@+id/askas4"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas4" />

        <Button
            android:id="@+id/askas6"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas6" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ButtonsBottomtLine"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/askas8"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas8" />

        <Button
            android:id="@+id/askas10"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas10" />

        <Button
            android:id="@+id/askas12"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas12" />

        <Button
            android:id="@+id/askas20"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="rollLogger"
            android:text="@string/askas20" />
    </LinearLayout>

    <TextView
        android:id="@+id/leftpane"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_above="@+id/ButtonsTopLine"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:gravity="center"
        android:text="@string/logger" />

    <TextView
        android:id="@+id/rightpane"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/ButtonsTopLine"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/leftpane"
        android:freezesText="true"
        android:gravity="top"
        android:maxLines="50"
        android:scrollbars="vertical" />

</RelativeLayout>



**notice the build order which start from the bottom to the up,**  

by the way `xmlns:android="http://schemas.android.com/apk/res/android"`
not needed in every layout just once for the root layout