我用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>
答案 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));
希望这有帮助。