我从来没有想过我会遇到这么多麻烦来完成这件事。
我希望显示的内容让我们说2行4列。 在每个单元格中是具有不同大小和不同宽高比的图片。 所有8个单元格都应该填满整个屏幕。
我现在想要在分辨率为1920x1080px的智能手机和分辨率为480x320px的智能手机上正确显示这些8张图像(缩小/缩放)。 在这两种情况下,8张图片应该填满整个屏幕。
有人可以如此友善并发布这几行代码吗?
或者我是否需要以编程方式执行此操作,检查屏幕分辨率,检查dpi然后重新缩放每个图像?
非常感谢
这对我不起作用:
<GridLayout
android:id="@+id/gridLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|top"
android:src="@drawable/img1" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|top"
android:src="@drawable/img2" />
</GridLayout>
我使用
尝试了几乎任何一种组合机器人:layout_width =&#34; match_parent&#34; fill_parent或wrap_content
答案 0 :(得分:0)
所以我终于开始使用它了,你是对的GridLayout由于某种原因似乎有点偏。然而,我编写并测试了以下代码,它可以满足您的需求。显然,您只需要将图像更改为您需要的图像。
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2"
android:orientation="vertical"
android:id="@+id/grid">
<RelativeLayout
android:id="@+id/top_row"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" />
<RelativeLayout
android:id="@+id/bottom_row"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" />
</LinearLayout>
然后您可以动态添加视图
RelativeLayout topLayout = (RelativeLayout) findViewById(R.id.top_row);
RelativeLayout bottomLayout = (RelativeLayout) findViewById(R.id.bottom_row);
Point point = new Point();
getWindowManager().getDefaultDisplay().getSize(point);
int width = point.x;
RelativeLayout.LayoutParams params;
for(int i = 0; i < 8; i++){
params = new RelativeLayout.LayoutParams(width/4, RelativeLayout.LayoutParams.MATCH_PARENT);
ImageView image = new ImageView(this);
image.setId(i+1);
image.setVisibility(View.VISIBLE);
image.setImageResource(R.drawable.ic_launcher);
image.setScaleType(ScaleType.FIT_XY);
if(i < 4){
if(i == 0)
params.addRule(RelativeLayout.ALIGN_LEFT);
else
params.addRule(RelativeLayout.RIGHT_OF, i);
image.setLayoutParams(params);
topLayout.addView(image);
}
else if(i >=4){
if(i == 4)
params.addRule(RelativeLayout.ALIGN_LEFT);
else
params.addRule(RelativeLayout.RIGHT_OF, i);
image.setLayoutParams(params);
bottomLayout.addView(image);
}
}
这应该按照你要求的那样去做:)