无法使用绝对布局将视图精确定位在屏幕中间

时间:2015-10-12 07:53:13

标签: android

我正在尝试使用绝对布局在屏幕中间放置视图。

首先,我得到屏幕高度(以像素为单位)

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int height_px = size.y;

其次,我将屏幕高度转换为密度像素

    Resources resources = this.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    float height_dp = height_px / (metrics.densityDpi / 160f);

然后我打印出密度像素的屏幕高度值以进行测试

    Log.v("TAG height: ", String.valueOf(height_dp));  // prints 640      

最后,我将第二个视图purple_view的y偏移设置为640(320)的一半。

<AbsoluteLayout
    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:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp"
    tools:context=".MainActivity">

    <View
        android:id="@+id/white_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFFF0"
        android:layout_y="0dp"
        />

    <View
        android:id="@+id/purple_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF0FF0"
        android:layout_y="320dp"
        />

</AbsoluteLayout>

但是,purple_view视图并未完全位于屏幕中间。

enter image description here

1 个答案:

答案 0 :(得分:0)

使用它可能有所帮助:

ImageView iv = new ImageView(this);
AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(30, 40);
params.leftMargin = 50;
params.topMargin = 60;

rl.addView(iv, params);

根据需要更改值。