<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:src="@drawable/music" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:src="@drawable/music" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:src="@drawable/music" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:src="@drawable/music" />
</TableLayout>
这是原始的XML,我只需要添加更多。我有一个很大的imageView,因此它需要缩小并复制16次到4x4网格中。我只能在一列中获得4张图像
答案 0 :(得分:0)
我不明白大图片的问题,但我会告诉你我的建议:
有多种可能的解决方案:
由于您要创建16个imageView,因此可以将GridView与BaseAdapter一起使用。如果您在xml中看到它很重要,请使用isInEditMode作为custo GridView,并将适配器设置为带有假项目的适配器。您应该了解gridView上列/行大小的问题,尤其是在更改方向时。
另一种选择可能是GridLayout
如果您坚持使用TableLayout,则可以有4个TableRow实例,每个实例的权重为1。在每个中,添加4个imageViews,每个都有1的权重。
答案 1 :(得分:0)
添加4 TableRow
并将ImageView
放入其中。
或者您可以从代码创建此网格。像这样:
LinearLayout container = null;
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1);
for (int i = 0; i < 16; ++i) {
if (i % 4 == 0) {
container = new LinearLayout(getActivity());
container.setOrientation(LinearLayout.HORIZONTAL);
mGrid.addView(container);
}
LinearLayout view = (LinearLayout) mLayoutInflater
.inflate(R.layout.view_item, container, false);
//populate the view in loop
view.setLayoutParams(params);
container.addView(view);
}