0

我是安卓新手。我在一个活动中有多个图像视图,并且会添加更多。我将这些图像视图用作按钮。我遇到的问题是让它们都正确适配并根据屏幕尺寸进行缩放。我能得到一些帮助吗?

这是 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>

我用作按钮的两个图像视图不会根据设备大小进行缩放。

在此处输入图像描述

4

1 回答 1

0

是的,我以前遇到过这个问题。参考我的其他回答:

在不同屏幕密度的特定位置放置一个点从服务器调整图像大小

您需要做的是找到这个新屏幕比旧屏幕大多少,首先获取您正在测试的设备的尺寸并将它们放入 widthOfStandardDevice 和 heightOfStandardDevice。一旦您知道新屏幕有多大然后是您使用 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"
于 2013-08-22T12:18:03.567 回答