创建一个简单的GridLayout无法正常工作

时间:2015-05-31 01:04:22

标签: java android android-gridlayout

我尝试以编程方式在android中创建一个简单的网格布局。它将具有一定数量的行和列,并且每个方块的颜色不同。我试过的似乎是为每个方块着色最后一个视图的值(我相信),但我不太清楚为什么。 GridLayout似乎没有非常清晰的文档。这是我的代码:

public static final int GAME_BOARD_COLUMNS = 8;
public static final int GAME_BOARD_ROWS = 8;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_game_board, container, false);
    createGameBoard(view);

    return view;
}

private void createGameBoard(View view) {
    GridLayout grid = (GridLayout)view.findViewById(R.id.grid_layout_game_board);
    grid.setRowCount(GAME_BOARD_ROWS);
    grid.setColumnCount(GAME_BOARD_COLUMNS);

    for (int i = 0; i < GAME_BOARD_ROWS; i++) {
        for (int j = 0; j < GAME_BOARD_COLUMNS; j++) {
            GridLayout.LayoutParams params = 
                new GridLayout.LayoutParams(GridLayout.spec(i), GridLayout.spec(j));

            View square = new View(getActivity());
            int color = Color.rgb(
                    (int) ((255.0f / (float) GAME_BOARD_ROWS) * i),
                    (int) ((255.0f / (float) GAME_BOARD_COLUMNS) * j),
                    100);
            square.setBackgroundColor(color);

            grid.addView(square, params);
        }
    }
}

游戏板布局非常简单:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_layout_game_board"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</GridLayout>

当我运行它时,我的屏幕只是蓝色,无法弄清楚原因,虽然每次迭代调试颜色都不同,所以我猜测它并没有真正添加视图到GridLayout正确。任何人都有过如何以编程方式正确填充GridLayout的经验吗?

1 个答案:

答案 0 :(得分:1)

您可能不需要指定 LayoutParams GridLayout 应该在您提供时按顺序添加单元格(使用 grid.addView(...))。

另一个可能的问题是您的 square View对象。您应该确保返回的View对象设置了宽度和高度,并且视图中没有任何子项(如果有)具有指定可能填满屏幕的任何宽度或高度。