¿Hay una manera de compensar una vista desde el centro en Android?
Estoy intentando posicionar mi botón no exactamente en el centro, pero digamos que en los 2 / 5s de la altura de la pantalla, estaba buscando el atributo sin éxito, así que probé este enfoque
<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>
Sin embargo, no funciona, incluso si configuro el margen en la vista falsa.
¿Algunas ideas?
//EDITAR//
gracias por sus respuestas, el atributo de relleno funciona, sin embargo, como es una imagen grande y si quiero que empiece a 2/5 de la altura de la pantalla, cubre el punto central de la pantalla, así que si uso el atributo de relleno funciona pero Lo empuja lejos del centro y no permite que lo cubra. Disculpa, me equivoque
Sin embargo, hice que funcionara utilizando un diseño lineal, lo que quería evitar porque hay más vistas en la parte superior e inferior una junto a la otra, lo que llevaría a vistas anidadas utilizando el diseño lineal. Lamentablemente creo que es la única opción.
Básicamente, utiliza otro diseño lineal que llena el espacio restante que no se usa en las vistas superior e inferior con altura = 0dp y peso = 1 y establece su gravedad en el centro
<?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>
Gracias por tu contribución.