使用TableLayout边距,TableRows流血

时间:2015-05-21 14:29:43

标签: android layout

我正在创建一个设置屏幕,一个带有TableLayout的ScrollView。我不希望我的设置TableRows出现压扁,所以我设置每个8dp边距。但是,这意味着内部的内容似乎流血(特别是在右侧)。

似乎表格行的宽度不排除其自己的边距宽度,这会在尝试fill_parent为自己的宽度时弄乱其内容的宽度。我该如何解决这个问题?

图片示例 - 请参阅右侧的复选框: screenshot of android emulator

我的布局XML:

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

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="0">

            <TableRow android:layout_margin="@dimen/row_padding">
                <TextView
                    android:text="Settings"
                    android:gravity="center"
                    android:textAppearance="?android:attr/textAppearanceLarge"/>
            </TableRow>

            <TableRow android:layout_margin="0dp">

                <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="fill_parent"
                    android:layout_height="@dimen/row_height">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="?android:attr/textAppearanceLarge"
                        android:text="No margin"
                        android:id="@+id/textView" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:text="Explanation"
                        android:id="@+id/textView2" />
                </LinearLayout>

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/checkBox"
                    android:layout_gravity="center" />
            </TableRow>

            <TableRow android:layout_margin="@dimen/row_padding">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:text="8dp margin"
                    android:id="@+id/textView3" />

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/checkBox2"
                    android:layout_column="1"
                    android:checked="false" />
            </TableRow>

        </TableLayout>

    </ScrollView>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

不是将保证金直接放在TableRow标签上,而是可以在内容上添加边距,即表格单元格,

我修改了你的代码。请看看。

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

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1">

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0">

        <TableRow >
            <TextView
                android:text="Settings"
                android:gravity="center"
                android:textAppearance="?android:attr/textAppearanceLarge"/>
        </TableRow>

        <TableRow android:layout_margin="0dp">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="fill_parent"
                >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceLarge"
                    android:text="No margin"
                    android:id="@+id/textView" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="Explanation"
                    android:id="@+id/textView2" />
            </LinearLayout>

            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/checkBox"
                android:layout_gravity="center" />
        </TableRow>

        <TableRow>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:text="8dp margin"
                android:layout_margin="8dip"
                android:id="@+id/textView3" />

            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/checkBox2"
                android:layout_margin="8dip"
                android:layout_column="1"
                android:checked="false" />
        </TableRow>

    </TableLayout>

</ScrollView>

希望它会对你有帮助!