【问题标题】:Scale multiple Android ImageViews to All Fit on Screen Regardless of Device Size无论设备大小如何,都可以缩放多个 Android ImageView 以适应屏幕
【发布时间】:2013-08-22 11:55:27
【问题描述】:

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

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

【问题讨论】:

  • 你能链接到你想要达到的目标的图片吗?
  • @user2029585 你看到我的回答了吗?
  • 你想要每行两个等间距的按钮吗?
  • 是的,我确实希望它们均匀分布。
  • 我的意思是,看起来第一行应该有第三张图像,而您最多可以有三行。如果图像完全不失真很重要,我认为您不能仅使用 XML 来做到这一点。

标签: android imageview scale


【解决方案1】:

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

Placing a point at specific position on different screen densitiesResizing images from server

您需要做的是找出这个新屏幕比旧屏幕大多少,方法是首先获取您正在测试的设备的尺寸并将它们放入 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    相关资源
    最近更新 更多