1

我正在开发一个最初静态配置按钮布局的应用程序。现在发生的情况是,在更宽的屏幕(SIII、Note、平板电脑等)上,表格布局在所有屏幕上都保持相同大小,并且不会动态“展开”。如何调整此代码以完成此操作?

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="0dp"
    android:gravity="center_vertical"
    android:orientation="vertical" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal" >

        <RelativeLayout
            android:id="@+id/stoolRelative"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15px"
            android:gravity="center_horizontal" >

            <ImageButton
                android:id="@+id/stoolmenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menustool" >
            </ImageButton>

            <TextView
                android:id="@+id/stoolText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/stoolmenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:text="@string/stoolmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/foodRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px"
            android:gravity="center_horizontal" >

            <ImageButton
                android:id="@+id/foodmenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menufood" >
            </ImageButton>

            <TextView
                android:id="@+id/foodText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/foodmenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:text="@string/foodmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/PainRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px" >

            <ImageButton
                android:id="@+id/painmenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menupain" >
            </ImageButton>

            <TextView
                android:id="@+id/painText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/painmenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:text="@string/painmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15px"
        android:gravity="center_horizontal" >

        <RelativeLayout
            android:id="@+id/moodRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px" >

            <ImageButton
                android:id="@+id/moodmenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menumood" >
            </ImageButton>

            <TextView
                android:id="@+id/moodText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/moodmenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:text="@string/moodmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/medsTakeRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px"
            android:gravity="center_horizontal" >

            <ImageButton
                android:id="@+id/medstakemenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menumeds" >
            </ImageButton>

            <TextView
                android:id="@+id/medsTakeText"
                android:layout_width="70px"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/medstakemenu"
                android:layout_alignRight="@+id/medstakemenu"
                android:layout_below="@+id/medstakemenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:lines="2"
                android:maxLines="2"
                android:minLines="2"
                android:singleLine="false"
                android:text="@string/medstakenmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/otherIssuesRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px" >

            <ImageButton
                android:id="@+id/othermenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menuother" >
            </ImageButton>

            <TextView
                android:id="@+id/otherIssuesText"
                android:layout_width="100px"
                android:layout_height="wrap_content"
                android:layout_below="@+id/othermenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:lines="2"
                android:maxLines="2"
                android:minLines="2"
                android:singleLine="false"
                android:text="@string/otherissuesmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>
    </TableRow>

    <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15px"
        android:gravity="center_horizontal" >

        <RelativeLayout
            android:id="@+id/historyRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px" >

            <ImageButton
                android:id="@+id/historymenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menuhistory" >
            </ImageButton>

            <TextView
                android:id="@+id/historyText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/historymenu"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:layout_marginTop="5px"
                android:text="@string/historymenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/historyRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px"
            android:gravity="center_horizontal" >

            <ImageButton
                android:id="@+id/academymenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menuacademy" >
            </ImageButton>

            <TextView
                android:id="@+id/academyText"
                android:layout_width="120px"
                android:layout_height="wrap_content"
                android:layout_below="@+id/academymenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:lines="2"
                android:maxLines="2"
                android:minLines="2"
                android:singleLine="false"
                android:text="@string/ibdacademymenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/myPassPortRelative"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15px"
            android:gravity="center_horizontal" >

            <ImageButton
                android:id="@+id/mypassportmenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:src="@drawable/menupassport" >
            </ImageButton>

            <TextView
                android:id="@+id/myPassportTextUp"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/mypassportmenu"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="5px"
                android:gravity="center_horizontal"
                android:lines="2"
                android:maxLines="2"
                android:minLines="2"
                android:singleLine="false"
                android:text="@string/myibdpassportmenu"
                android:textSize="11dp"
                android:textStyle="bold" >

            </TextView>
            <!--
        <TextView 
        android:layout_below="@+id/myPassportTextUp"
        android:text="Passport" android:layout_height="wrap_content" 
        android:layout_width="wrap_content" android:id="@+id/myPassportTextDown" 
        ></TextView>
            -->
        </RelativeLayout>
    </TableRow>
</TableLayout>

编辑:这是当前布局的屏幕截图

http://imgur.com/fHEFn1H

随着屏幕变宽,表格保持这个精确大小,并且两边的边距增加。想法?

4

2 回答 2

2

对于每个TableRow更改/添加

android:layout_weight="1"
android:gravity="center_vertical"

对于每个RelativeLayout更改/添加

android:layout_weight="1"
于 2013-07-17T17:16:47.600 回答
0

您需要动态(以编程方式)调整布局元素的位置。例如,如果我们TextViews在 a中有 2 LinearLayout,我们可以将 a 添加OnGlobalLayoutListenerLinearLayout

myLinearLayout.getViewTreeObserver().addOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener)

在这个监听器中,我们可以访问布局元素的宽度和高度。因此,如果我们需要定位我们的 TextView(将它们均匀地分布在屏幕宽度上),我们将执行以下操作:

int width = myLinearLayout.getWidth();
int lMarginTextView = (width - myTextView1.getWidth() - myTextView2.getWidth()) / 3;
LinearLayout.LayoutParams paramsTV = new LinearLayout.LayoutParams(     
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
paramsTV.leftMargin = lMarginTextView;

myTextView1.setLayoutParams(paramsTV);
myTextView2.setLayoutParams(paramsTV);
于 2013-07-17T15:44:22.280 回答