有没有办法在Android中从中心偏移视图?

即时尝试posinition我的button不完全在中心,但让我们说在2/5的屏幕高度,我正在寻找属性不成功,所以我试过这种方法

<RelativeLayout 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:background="@drawable/background" android:padding="20dp" > <ImageButton android:id="@+id/flashlight_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_above="@+id/fakeView" android:background="@null" android:contentDescription="@string/flashlight_button_description" android:src="@drawable/freeml_bright" /> <View android:id="@+id/fakeView" android:layout_width="10dp" android:layout_height="10dp" android:layout_centerInParent="true" android:background="#FFAABB" /> </RelativeLayout> 

但是它不起作用,即使我在假的视图上设置了保证金。

有任何想法吗?

//编辑//

感谢您回答球员,填充属性的作品,但是因为它是一个大的形象,如果我想要它在屏幕高度的2/5开始,它覆盖屏幕的中心点,所以如果我使用填充属性它的作品,但它把它推离中心,不允许它覆盖它。 对不起这是我的错

虽然,我使用线性布局工作,这是我想避免的,因为在顶部和底部有更多的视图彼此相邻,所以它会导致使用线性布局的嵌套视图。 不幸的是我认为它是唯一的select。

它基本上是使用另一个线性布局来填充未被顶部和底部视图使用的剩余空间,height = 0dp和weight = 1,并将其重力设置为中心

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="20dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/application_logo_description" android:src="@drawable/mylight" /> <ImageButton android:id="@+id/settings_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:background="@null" android:contentDescription="@string/settings_button_description" android:src="@drawable/settings_button" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:orientation="vertical" > <ImageButton android:id="@+id/flashlight_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:contentDescription="@string/flashlight_button_description" android:src="@drawable/flashlight_button_selector" /> <View android:id="@+id/fakeView" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginTop="60dp" android:background="#FFAABB" /> </LinearLayout> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:contentDescription="@string/powered_by_description" android:src="@drawable/powered_by" /> <ImageButton android:id="@+id/ad_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal" android:background="@null" android:contentDescription="@string/ad_button_description" android:src="@drawable/freeml" /> </LinearLayout> 

感谢您的input。

Solutions Collecting From Web of "有没有办法在Android中从中心偏移视图?"

取决于目标设备的屏幕大小,X dp的填充可能会使其移动超过五分之一的高度。

你可能必须自己编码这个运动。

但是再一次,没有什么能阻止你这样做

 <RelativeLayout 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:background="@drawable/background" android:padding="20dp" > <View android:id="@+id/fakeView" android:layout_width="10dp" android:layout_height="10dp" android:layout_centerInParent="true" android:background="#FFAABB" /> <ImageButton android:id="@+id/flashlight_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_above="@+id/fakeView" android:marginBottom="50dp" android:background="@null" android:contentDescription="@string/flashlight_button_description" android:src="@drawable/freeml_bright" /> 

不要使用边距,使用填充(顶部),如下所示:

 <View android:id="@+id/fakeView" android:layout_width="10dp" android:layout_height="10dp" android:layout_centerInParent="true" android:paddingTop="80dp" android:background="#FFAABB" /> 

这应该工作,但我没有testing它!

尝试使用属性android:layout_toLeftOf =“@ + id / fakeView”