Android ViewFlipper导致图像无法调整表格中的大小

时间:2014-02-17 00:08:31

标签: android android-tablelayout viewflipper

我正在使用TableLayout在Android中创建一个方形游戏板。我想设置表格宽度和高度的dp,并让其内容自动展开和收缩以适合表格。

我使用tableRows中的条目作为LinearLayouts,内部有一个ImageView,但是我需要通过单击操作更改显示的图像,所以我想我会使用ViewFlipper。

现在我正在使用ViewFlipper,但是我的图像尺寸已经变得非常糟糕。有没有人知道我是否可以在ViewFlipper上设置一个设置来让图像在表格中自动调整它们的大小?

这是我的xml:

<TableLayout
    android:id="@+id/gameBoard"
    android:layout_width="@dimen/boardWidth"
    android:layout_height="@dimen/boardWidth"
    android:layout_margin="0dp"
    android:padding="0dp"
    android:shrinkColumns="*"
    android:stretchColumns="*" >
</TableLayout>

这是我用编程方式创建表的代码:

TableLayout gameBoard = (TableLayout) findViewById(R.id.gameBoard);
TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT,TableLayout.LayoutParams.WRAP_CONTENT);
rowParams.setMargins(0, 0, 0, 0);
for (int y = settings.getBoardSide() - 1; y > -1; y--) {
    TableRow row = new TableRow(this);
    row.setPadding(0, 0, 0, 0);

    for (int x = 0; x < settings.getBoardSide(); x++) {

        ViewFlipper flipper = new ViewFlipper(this);
        flipper.setOnClickListener(new TileClick());

        //default image
        ImageView cloud = new ImageView(this);
        cloud.setImageResource(R.drawable.transparent_cloud);
        cloud.setAdjustViewBounds(true);
        flipper.addView(cloud, 0);

        //second image
        ImageView landscape = new ImageView(this);
        landscape.setImageResource(R.drawable.land_scape);
        landscape.setAdjustViewBounds(true);
        flipper.addView(landscape, 1);

        row.addView(flipper);
    }
    gameBoard.addView(row, rowParams);
}

1 个答案:

答案 0 :(得分:0)

事实证明,为了我的目的,FrameLayout的宽度和高度设置为特定的dp是最好的。这样我就可以控制视图并确保它具有正确的高度和宽度。使用FrameLayout,我可以随意添加和删除视图,并将不同的视图叠加在一起。