1

我想构建基于表格布局的通用 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" />

4

1 回答 1

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 是线性布局。因此,您可以使用 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>
于 2013-01-15T11:03:28.523 回答