我是Android新手。我在一个活动中有多个图像视图,并将添加更多。我正在使用这些图像视图作为按钮。我遇到的问题是让它们全部正确匹配并根据屏幕大小进行缩放。我可以帮忙解决这个问题吗?
这是XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/homeBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:scaleType="centerCrop"
android:src="@drawable/homebackground" />
<ImageView
android:id="@+id/publicAffairs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:src="@drawable/publicaffairs" />
<ImageView
android:id="@+id/actionAlerts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"
android:layout_marginLeft="1dp"
android:layout_toRightOf="@+id/publicAffairs"
android:src="@drawable/actionalerts" />
</RelativeLayout>
我用作按钮的两个图像视图不会根据设备大小进行缩放。
答案 0 :(得分:0)
是的我以前遇到过这个问题。请参阅我的其他答案:
Placing a point at specific position on different screen densities 和 Resizing images from server
您需要做的是找到这个新屏幕比旧屏幕大了多少,首先获取您正在测试的设备的尺寸,然后将它们放入widthOfStandardDevice和heightOfStandardDevice.Ance你知道多大新屏幕是您使用DisplayMetrics测试的屏幕,您可以使用两个乘法器将所有内容相乘,以使位置和大小相对于屏幕大小相同。
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;
float widthMultiplier = width/widthOfStandardDevice;
float heightMultiplier = height/heightOfStandardDevice;
int image_width = (int)(/*regular image width on your test device*/ * widthMultiplier);
int image_height = (int)(/*regular image height on your test device*/ * heightMultiplier);
LayoutParams params = new LayoutParams(image_width, image_height);
params.setMargins(/*regular left margin*/ * widthMultiplier,
/*regular bottom margin*/ * heightMultiplier,);
ImageView imageView = (ImageView)findViewById(R.id.imageView1);
imageView.setLayoutParams(params);
RelativeLayout x = (RelativeLayout)findViewById(R.id.relative_layout_id);
x.addView(imageView);
另外,你应该像这样添加id到ImageViews和RelativeLayout:
android:id="@+id/your_id_here"
对于我们之前在代码中创建的imageView,id为:
android:id="@+id/imageView1"
用于布局:
android:id="@+id/relative_layout_id"