0

我使用了 dip(eg: width = 30dip, scroll bar until the middle of screen) 作为参数但是在 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>
4

2 回答 2

1

dip 代表与密度无关的像素,这意味着 2 个尺寸相同但密度不同的屏幕将处理该值相同,但是 2 个不同尺寸的屏幕(大与正常)将不同地处理该值。

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

同样在您的真实布局中,我建议您使用 match_parent 作为高度,您通常不会为 viewGroups 使用设置宽度。

于 2013-05-10T14:39:57.663 回答
1

将 RelativeLayout 的 LayoutParameters 动态设置为 screenWidth/2 ..它将适用于所有设备..

在你的 onCreate 做这样的事情: -

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

希望这可以帮助。

于 2013-05-10T14:40:28.727 回答