我正在使用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);
}
答案 0 :(得分:0)
事实证明,为了我的目的,FrameLayout的宽度和高度设置为特定的dp是最好的。这样我就可以控制视图并确保它具有正确的高度和宽度。使用FrameLayout,我可以随意添加和删除视图,并将不同的视图叠加在一起。