使用多种屏幕分辨率在布局上拟合ImageView元素

时间:2015-09-27 11:52:48

标签: android android-layout android-relativelayout

我是android新手。我试图在屏幕底部放置5个图标。我创建了不同分辨率的图标,即ldpi,mdpi,hdpi,xhdpi和xxhdpi。我使用以下布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/gameRootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.xx.drops.MainActivity" >

<RelativeLayout
    android:id="@+id/bucketLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="0dp"
    android:layout_marginBottom="25dp" >
</RelativeLayout>

</RelativeLayout>

enter image description here

我将图标以编程方式添加到子相对布局中。但是在屏幕较小的设备上,如图所示,我遇到了问题。 在具有屏幕480 * 854的设备中,大小(96 * 96)的hdpi图标正在加载但正在屏幕外。根据我的理解,如果我可以在适当大小的屏幕上工作并提供其他分辨率的图标,则应该自动处理。如果我错了,请纠正我。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

因为,每种设备类型mdpi,hdpi,xhdpi都有许多不同的屏幕尺寸 因此,我的建议是:
如果以编程方式将图像添加到布局,则应计算屏幕宽度,然后按screenwidth / 5设置每个图像视图的宽度和高度

答案 1 :(得分:1)

您需要首先计算屏幕宽度,然后将每个ImageView的宽度设置为屏幕宽度/ 5,如下所示:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;
int iconWidth = (int) screenWidth / 5;

然后将每个ImageView的宽度设置为iconWidth。