如何从相同的视图构建TableLayout 5X5

时间:2013-01-15 10:43:50

标签: android android-layout tablelayout

我想构建通用的5X5视图,这些视图会在表格布局上进行(所有视图都具有相同的宽度和高度) 正如你所看到的,我的代码不是通用的。该怎么办?我试着玩填充父母和匹配父母...请帮助。 我希望tableLaayout的宽度和高度相等。

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/llMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical"
tools:context=".MainActivity" >

<TableLayout
    android:id="@+id/tableBoard"
    android:layout_width="wrap_content"
    android:layout_height="313dp"
    android:layout_centerHorizontal="true" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_weight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <com.example.com.worfield.barak.Square
            android:id="@+id/view1"
            android:layout_width="60dp"
            android:layout_height=""
            android:layout_margin="1dp"

            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view2"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"                         
            android:background="@drawable/square" />
        <com.example.com.worfield.barak.Square
            android:id="@+id/view3"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"

            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
           android:id="@+id/view4"
           android:layout_width="60dp"
           android:layout_height="60dp"
           android:layout_margin="1dp"

           android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view5"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"

            android:background="@drawable/square" />

    </TableRow>

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

        <com.example.com.worfield.barak.Square
            android:id="@+id/view6"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:layout_weight="0.24"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view7"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view8"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
            android:id="@+id/view9"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view10"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />
    </TableRow>

    <TableRow
        android:layout_weight="1"
        android:id="@+id/tableRow3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <com.example.com.worfield.barak.Square
            android:id="@+id/view11"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view12"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view13"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view14"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
            android:id="@+id/view15"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />
    </TableRow>

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

        <com.example.com.worfield.barak.Square
            android:id="@+id/view16"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view17"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
            android:id="@+id/view18"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view19"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view20"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />
    </TableRow>

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

        <com.example.com.worfield.barak.Square
            android:id="@+id/view21"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
            android:id="@+id/view22"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

        <com.example.com.worfield.barak.Square
            android:id="@+id/view23"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
            android:id="@+id/view24"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"

            android:background="@drawable/square" />

       <com.example.com.worfield.barak.Square
            android:id="@+id/view25"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_margin="1dp"
            android:background="@drawable/square" />
    </TableRow>
</TableLayout>

<Button
    android:id="@+id/bStart"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tableBoard"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:text="Do Something" />

<TextView
    android:id="@+id/tvError"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bStart"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="18dp"
    android:text="TextView" />

1 个答案:

答案 0 :(得分:2)

创建一个只能是方形的特殊视图。您应该相应地覆盖onMeasure方法。例如,您可以执行以下操作:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    //final int height = getMeasuredHeight();
    final int width = getMeasuredWidth();

    setMeasuredDimension(width, width);
}

TableRow是LinearLayout。因此,您可以使用layout_weight在水平方向上平均传播5个子项。为行的所有子项设置layout_width =“0”和layout_weight =“1”。测量时,每个孩子的宽度将是tableRow宽度的1/5,孩子的高度将等于它的宽度。

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <TableLayout
        android:id="@+id/tableBoard"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" >

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

            <com.kamagames.pokerist.Squire
                android:id="@+id/view25"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:layout_weight="1"
                android:background="#00ff00" />

            <com.kamagames.pokerist.Squire
                android:id="@+id/view25"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:layout_weight="1"
                android:background="#ff0000" />

            <com.kamagames.pokerist.Squire
                android:id="@+id/view25"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:layout_weight="1"
                android:background="#0000ff" />

            <com.kamagames.pokerist.Squire
                android:id="@+id/view25"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:layout_weight="1"
                android:background="#ffff00" />

            <com.kamagames.pokerist.Squire
                android:id="@+id/view25"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_margin="1dp"
                android:layout_weight="1"
                android:background="#00ffff" />
        </TableRow>
    </TableLayout>
</RelativeLayout>