【问题标题】:Gap between rows in tablelayout表格布局中的行之间的间隙
【发布时间】:2014-01-21 08:33:27
【问题描述】:

我想做一个 6x6 的拼图游戏。 所以我用 6x6 imageView 做了一个布局,认为这很容易。 但是不,我在行之间有空格,我已经尝试了一段时间来让它们离开,但似乎没有任何效果。

这是我的 XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="0dip"
    >

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="30sp"
        android:text="@string/game_text" >
    </TextView>

    <TableLayout
        android:id="@+id/TableLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="0dip"
         >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="160dp"
            android:layout_height="160dp">

            <ImageView
                android:id="@+id/row1col1"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row1col2"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row1col3"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row1col4"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row1col5"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row1col6"
                android:layout_weight="0.16" >
            </ImageView>

        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/row2col1"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row2col2"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row2col3"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row2col4"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row2col5"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row2col6"
                android:layout_weight="0.16" >
            </ImageView>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:padding="0dip">

            <ImageView
                android:id="@+id/row3col1"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row3col2"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row3col3"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row3col4"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row3col5"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row3col6"
                android:layout_weight="0.16" >
            </ImageView>

        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/row4col1"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row4col2"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row4col3"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row4col4"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row4col5"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row4col6"
                android:layout_weight="0.16" >
            </ImageView>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/row5col1"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row5col2"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row5col3"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row5col4"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row5col5"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row5col6"
                android:layout_weight="0.16" >
            </ImageView>
        </TableRow>
        <TableRow
            android:id="@+id/tableRow6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/row6col1"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row6col2"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row6col3"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row6col4"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row6col5"
                android:layout_weight="0.16" >
            </ImageView>

            <ImageView
                android:id="@+id/row6col6"
                android:layout_weight="0.16" >
            </ImageView>
        </TableRow>

    </TableLayout>

</LinearLayout>

【问题讨论】:

    标签: android android-tablelayout


    【解决方案1】:

    使用 GridView 代替 TableLayout。以便您可以调整行和列的宽度和高度。

    【讨论】:

    • 能否让它们自适应,以便框的大小根据用户屏幕而变化?
    • Gridview 具有 Gridview 的高度和宽度,您可以将它们设置为 wrap_content
    【解决方案2】:

    我认为你的问题是 layout_weight。布局的默认 layout_weight 为 1,这通常很好,因为您可以使用除以该数字。但是,在您的情况下,每行有 6 个项目。这意味着你必须将 1 除以 6,得到的数字是 0.166666666_,而你只有 0.16。

    你可以做些什么来解决这个问题,给布局一个 layout_weight 6,每个图像视图一个 layout_weight 1。试试这个。我刚刚添加了 android:layout_weight="6" 到线性布局并将所有 android:layout_weight="0.16" 更改为 android:layout_weight="1" 。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="vertical"
        android:padding="0dip"
        android:layout_weight="6"
        >
    
        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="30sp"
            android:text="@string/game_text" >
        </TextView>
    
        <TableLayout
            android:id="@+id/TableLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="0dip"
             >
    
            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="160dp"
                android:layout_height="160dp">
    
                <ImageView
                    android:id="@+id/row1col1"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row1col2"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row1col3"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row1col4"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row1col5"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row1col6"
                    android:layout_weight="1" >
                </ImageView>
    
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
    
                <ImageView
                    android:id="@+id/row2col1"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row2col2"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row2col3"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row2col4"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row2col5"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row2col6"
                    android:layout_weight="1" >
                </ImageView>
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:padding="0dip">
    
                <ImageView
                    android:id="@+id/row3col1"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row3col2"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row3col3"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row3col4"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row3col5"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row3col6"
                    android:layout_weight="1" >
                </ImageView>
    
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <ImageView
                    android:id="@+id/row4col1"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row4col2"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row4col3"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row4col4"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row4col5"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row4col6"
                    android:layout_weight="1" >
                </ImageView>
            </TableRow>
    
            <TableRow
                android:id="@+id/tableRow5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <ImageView
                    android:id="@+id/row5col1"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row5col2"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row5col3"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row5col4"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row5col5"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row5col6"
                    android:layout_weight="1" >
                </ImageView>
            </TableRow>
            <TableRow
                android:id="@+id/tableRow6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
    
                <ImageView
                    android:id="@+id/row6col1"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row6col2"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row6col3"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row6col4"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row6col5"
                    android:layout_weight="1" >
                </ImageView>
    
                <ImageView
                    android:id="@+id/row6col6"
                    android:layout_weight="1" >
                </ImageView>
            </TableRow>
    
        </TableLayout>
    
    </LinearLayout>
    

    让我知道它是否有效,我没有要加载的图像。如果它不起作用,或者发布屏幕截图,其他人可能知道解决方案。

    【讨论】: