我想要实现的是我想在其父布局的中心上方放置View
“。考虑下面的图片:
我想要View
的蓝色矩形。你可以看到它正好在屏幕的(垂直)中心之上。
挑战在于我们不知道视图的高度(所以我不能使用底部边距)并且我想在布局xml
文件中这样做(所以我不能使用代码来确定视图的高度并以编程方式设置边距)
有这些限制,有没有办法做到这一点?
答案 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作为定位点):
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>