根据Android手机中的屏幕分辨率,dip没有正确拉伸

时间:2013-05-10 14:24:49

标签: android android-emulator screen density-independent-pixel

我用dip(例如:宽度= 30dip,滚动条直到屏幕中间),作为参数但在3.5英寸手机中看起来很好,在5英寸屏幕手机中它根本不到中间,这里是下面中间。为什么呢?

xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="450dip"
        android:paddingLeft="10dip">

        <ImageView
            android:id="@+id/gdi_arrow_up"
            android:layout_width="27dip"
            android:layout_height="27dip"
            android:layout_marginLeft="10dip"
            android:scaleType="fitCenter"
            android:layout_marginBottom="-8dip"
            android:src="?attr/asListArrowUp"  />

         <include layout="@layout/main_menu"/>


        <ImageView
            android:id="@+id/gdi_arrow_down"
            android:layout_width="27dip"
            android:layout_height="27dip"
            android:scaleType="fitCenter"
            android:layout_marginBottom="-8dip"
            android:layout_below="@android:id/list"/>

    </RelativeLayout>

2 个答案:

答案 0 :(得分:1)

dip表示与密度无关的像素,这意味着具有相同尺寸但不同密度的2个屏幕将对该值进行相同处理,但是2个不同大小的屏幕(大与正常)将以不同方式处理该值。

你的5英寸手机可能会被报告为大而你的3.5英寸手机正常导致问题,但我不确定。

同样在你的realative布局中我建议使用match_parent作为高度,你通常不会对viewGroups使用set widths。

答案 1 :(得分:1)

动态设置RelativeLayout的LayoutParameters,因为screenWidth / 2..it可以在所有设备上运行..

在onCreate中执行以下操作: -

RelativeLayout rel = (RelativeLayout) findViewById(R.id.rel1);
int screenHeight = getWindowManager()
                    .getDefaultDisplay().getHeight();
rel.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, screenHeight/2));

希望这有帮助。