例如:我将为galaxy选项卡进行布局(使用编辑器)。当我运行galaxy tab模拟器时,我的圆圈将遍布其“屏幕”。如果我为较小的手机进行布局然后运行手机的模拟器,我会得到相同的结果 - 我的圈子放在我定义的其他地方。好像编辑器像我想要的那样设置我的圈子 - 相对于imageview,它们被置于顶部。但是,设备似乎相对于模拟设备屏幕的大小放置圆圈。
我尝试使用viola_desmond_pic.getWidth()和viola_desmond_pic.getHeight(),这样我就可以以编程方式布置圆圈,但它们只返回屏幕的大小而不是视图。我理解dp并计划不同的密度但是,布局编辑器/模拟器的差异是疯狂的。
这是我的“layout-xlarge”文件夹中的XML。我的目标是Android 2.1
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout04"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/viola_desmond_pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="@string/desc"
android:scaleType="fitCenter"
android:src="@drawable/viola_desmond" />
<ImageView
android:id="@+id/keyhole"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="160dp"
android:layout_marginTop="95dp"
android:adjustViewBounds="true"
android:contentDescription="@string/desc"
android:scaleType="fitCenter"
android:src="@drawable/circle3" />
<ImageView
android:id="@+id/gun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/keyhole"
android:layout_alignRight="@+id/cat"
android:layout_marginRight="42dp"
android:adjustViewBounds="true"
android:contentDescription="@string/desc"
android:paddingBottom="35dp"
android:paddingLeft="60dp"
android:paddingRight="50dp"
android:scaleType="fitCenter"
android:src="@drawable/circle3" />
<ImageView
android:id="@+id/popcorn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="61dp"
android:layout_marginLeft="83dp"
android:layout_toRightOf="@+id/keyhole"
android:adjustViewBounds="true"
android:contentDescription="@string/desc"
android:paddingBottom="10dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="20dp"
android:scaleType="fitCenter"
android:src="@drawable/circle3" />
<ImageView
android:id="@+id/pen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="24dp"
android:layout_marginTop="46dp"
android:adjustViewBounds="true"
android:contentDescription="@string/desc"
android:paddingBottom="140dp"
android:paddingTop="140dp"
android:src="@drawable/circle3" />
</RelativeLayout>
答案 0 :(得分:2)
我遇到了类似的问题,模拟器没有使用正确的资源 - 即它选择中密度并扩大规模,这可能导致它们出现差异。它值得在textview中删除,在每个布局中都有一些描述性文本,并在第一种情况下对此进行测试。
在ViewTreeObserver的preDraw方法中,您可以尝试使用iv.getMeasuredHeight和getMeasuredWidth。我尝试避免这样做,然后玩布局。我很确定你不能在Java中指定布局的百分比,但是你可以从可用的屏幕尺寸中计算出所需的高度和宽度,并使用RelativeLayout.LayoutParams相应地调整你的图像视图并将参数分配给你的imageview。通过这种方式,您可以非常手动控制尺寸。
希望这有帮助。
杰森