如何将视图正好放在android中父视图/布局的中心上方

时间:2017-03-28 15:36:07

标签: android

我想要实现的是我想在其父布局的中心上方放置View“。考虑下面的图片:

enter image description here

我想要View的蓝色矩形。你可以看到它正好在屏幕的(垂直)中心之上。

挑战在于我们不知道视图的高度(所以我不能使用底部边距)并且我想在布局xml文件中这样做(所以我不能使用代码来确定视图的高度并以编程方式设置边距)

有这些限制,有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以按照以下布局将视图放在所需位置 -

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <View android:id="@+id/dummy_view"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_centerInParent="true"
        />
    <View
        android:id="@+id/your_view"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_above="@+id/dummy_view"
        android:layout_centerHorizontal="true"
        />

</RelativeLayout>

答案 1 :(得分:1)

我建议您使用ConstraintLayout,可以使用指南轻松完成(而不是使用View作为定位点):

Example

XML示例:

<android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <android.support.constraint.Guideline
            android:id="@+id/mid_guideline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            app:layout_constraintGuide_percent="0.5"
            />
    <View
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="#F00"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintBottom_toTopOf="@+id/mid_guideline"
            />
</android.support.constraint.ConstraintLayout>