根据屏幕尺寸显示图像

时间:2013-08-18 12:17:28

标签: java android android-image

我在550X257文件夹中有drawable的以下图片: enter image description here

对于不同尺寸的屏幕,它看起来有所不同: enter image description here

无论设备使用的是什么,我如何确保它填充父宽度。为了测试它我按比例增大了图像并将其放在不同的密度文件夹中,但是在更大的屏幕上图像更小。

我的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"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:background="@drawable/bd" >

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/button1"
        android:layout_marginLeft="64dp"
        android:layout_toRightOf="@+id/button1"
        android:text="Button" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="46dp"
        android:layout_marginTop="192dp"
        android:text="Button" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_margin="0dp"
        android:padding="0dp"
        android:src="@drawable/test" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

更改

android:layout_width="wrap_content"

致:

android:layout_width="match_parent"

适合您的ImageView。

答案 1 :(得分:1)

您有两个选择

首先将图像转换为不同的dpi设备(ldpi,mdpi,hdpi,xdpi)并将图像放入文件夹drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xdpi

上述方法可能不适合您

第二种方法是检测设备的大小,并以像素为单位设置图像的宽度和高度

通过此方法检测屏幕大小

    Display display = activity.getWindowManager().getDefaultDisplay();
    DisplayMetrics dm= new DisplayMetrics();
    display.getMetrics(dm);
    Log.i("widthxheight",dm.widthPixels+"x"+dm.heightPixels;

现在我希望您可以使用widthPixels或heightPixels来确定图像的宽度,如下所示:int imgwidth=(int)(widthPixels*0.80);//80 percent of width 并以相同的比例计算高度:int imgheight=(imgwidth*originalimageheight)/originalimagewidth;

之后,您可以使用LayoutParameters

以编程方式设置图像的宽度高度