imageView Scale在模拟器上是正确的,但在设备上没有

时间:2013-07-26 18:44:43

标签: android android-imageview

我在我的真实设备(手机)和模拟器上有不同比例的ImageView。模拟器正确显示图像,但真实设备(手机)没有。设备(手机)屏幕上的图像会变小。

这是我的java代码:

...

rootView = (ViewGroup) inflater.inflate(R.layout.arabic_page, container, false);
waraka = (ImageView) rootView.findViewById(R.id.waraka);
...
     InputStream istr;
            try {
//Search in OBB 
    istr = getExpansionFile().getInputStream(num_image+".png");
    Bitmap bitmap = BitmapFactory.decodeStream(istr);
    Drawable draw =new BitmapDrawable(getResources(),bitmap);
    waraka.setImageDrawable(draw);

这是我的布局代码:

<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:background="#FFFFFF"
        tools:context=".MainActivity">
        <ImageView
            android:id="@+id/waraka"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentTop="true" 
            android:scaleType="fitCenter"/></RelativeLayout>

3 个答案:

答案 0 :(得分:0)

layout_width和layout_height都有“wrap_content”。根据手机的dpi分辨率,它会有不同的尺寸。如果希望特定大小在多个设备上看起来相对相同,则必须以dps指定大小。 因此,请将图片视图更改为:

<ImageView
        android:id="@+id/waraka"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true" 
        android:scaleType="fitCenter"/>

答案 1 :(得分:0)

您应仔细阅读此链接,了解不同的屏幕尺寸:Android Screens Support

可能发生的事情是您的手机屏幕密度比模拟器高得多,这就是为什么事情变小了。请尝试在布局中使用与密度无关的像素(dp)。

答案 2 :(得分:0)

这是因为模拟器和手机没有相同的屏幕分辨率,所以你无法确定图像在布局中占用多少空间,除非你在尺寸点(dp)中设置它所以:

首先:你为什么同时使用这两个:

android:layout_alignParentBottom="true"
android:layout_alignParentTop="true" 

第二:我认为这段代码适合你:

<ImageView
            android:id="@+id/waraka"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:scaleType="fitXY"/>