【发布时间】:2010-12-30 05:32:22
【问题描述】:
我在我的应用程序中使用 TableLayout。它包含四个 TableRows,每个 TableRows 包含四个 ImageView。我想要的行为是缩放布局以适应最短的尺寸。
它在纵向模式下工作正常,但在横向模式下就惨败了。
从documentation 看来,这是因为 TableRow 的 layout_height 始终设置为 WRAP_CONTENT。虽然我可以设置各个视图的尺寸,但如果我将视图 layout_height 设置为 FILL_PARENT,则 TableLayout 根本不会呈现。
我觉得我缺少一些简单的东西。有没有办法让带有 TableRows 的 TableLayout 缩放以适应横向模式下的高度?
XML 布局:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*">
</TableLayout>
Java:
public class Example extends Activity {
private TableLayout mTable;
private int[] mDrawableIds = { R.drawable.draw01, R.drawable.draw02, R.drawable.draw03, R.drawable.draw04, R.drawable.draw05, R.drawable.draw06, R.drawable.draw07, R.drawable.draw08, R.drawable.draw09, R.drawable.draw10, R.drawable.draw11, R.drawable.draw12, R.drawable.draw13, R.drawable.draw14, R.drawable.draw15, R.drawable.draw16 };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTable = (TableLayout)findViewById(R.id.table);
for (int j=0; j<4; j++) {
TableRow tr = new TableRow(this);
tr.setLayoutParams(new ViewGroup.LayoutParams( LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
for (int i=0; i<4; i++) {
ImageView iv = new ImageView(this);
iv.setImageResource(mDrawableIds[j*4+i]);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setAdjustViewBounds(true);
tr.addView(iv);
}
mTable.addView(tr);
}
}
}
【问题讨论】:
-
GridView 不适用于您的用例吗? GridView 教程在这里:developer.android.com/guide/tutorials/views/hello-gridview.html
-
GridView 似乎想要滚动而不是将 ImageViews 调整为横向布局。也许如果我使图像资源更小可能会起作用。我希望避免调整图像大小。
标签: android tablelayout