我创建了一个自定义网格,在特定情况下,必须具有2x2图像。 我的XML代码是:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="2">
<LinearLayout
android:layout_weight="1"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp">
<ImageView
android:id="@+id/iv_immagine_sx1"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:src="@mipmap/cibo"
android:scaleType="centerCrop"/>
<ImageView
android:id="@+id/iv_immagine_dx1"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:src="@mipmap/cibo"
android:scaleType="centerCrop" />
</LinearLayout>
<LinearLayout
android:layout_weight="1"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp">
<ImageView
android:id="@+id/iv_immagine_sx2"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:src="@mipmap/cibo"
android:scaleType="centerCrop"/>
<ImageView
android:layout_weight="1"
android:id="@+id/iv_immagine_dx2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:src="@mipmap/cibo"
android:scaleType="centerCrop" />
</LinearLayout></LinearLayout>
我想获得一个对称网格,每行的宽度/高度相同,每列的宽度/高度相同。
问题是在物理设备上运行代码我有这种情况,如下所示。
行的高度不一样......为什么? 我该如何解决这个问题?
感谢您的帮助。
编辑:
正如@Rashiq所建议,我将weight_sum添加到水平LinearLayouts,但尚未修复。
根据@S Praveen Kumar的建议,我尝试使用TabLayout代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="160dp"
android:gravity="center"
android:orientation="vertical" >
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@mipmap/ic_launcher"/>
<ImageView
android:id="@+id/ImageView2"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:src="@mipmap/ic_launcher"/>
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" >
<ImageView
android:id="@+id/ImageView3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@mipmap/cibo" />
<ImageView
android:id="@+id/ImageView4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@mipmap/cibo" />
</TableRow>
</TableLayout>
但没有消息,问题仍然存在。
但是注意,我可以看到当图像源具有不同的尺寸时存在问题 ... 我该如何解决?
答案 0 :(得分:0)
希望这可以解决您的问题:
首先找到父级布局的宽度:
ViewTreeObserver observer = parentLayout.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
int width = parentLayout.getWidth();
parentLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//initiate your grid here
}
});
并将网格子布局的宽度和高度设置为获得的宽度,生成方形图像。