Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Hay una forma de compensar una vista desde el centro en Android?

Im tratando de possition mi botón no exactamente en el centro, pero permite decir en el 2 / 5s de la altura de la pantalla, estaba buscando atributos sin éxito, así que traté de 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 se establece el margen en la vista falsa.

¿Algunas ideas?

//EDITAR//

Gracias por las respuestas de los chicos, el atributo de relleno funciona, sin embargo, como es una gran imagen y si quiero que comience a 2 / 5ths de altura de la pantalla, que cubre el centro de la pantalla, por lo que si utilizo el atributo de relleno funciona, Lo empuja lejos del centro y no le permite cubrirlo. Disculpa, me equivoque

Sin embargo, lo hice funcionar con el diseño lineal, que quería evitar porque hay más vista en la parte superior e inferior al lado del otro por lo que daría lugar a las vistas anidadas utilizando el diseño lineal. Desafortunadamente creo que es la única opción.

Básicamente utiliza otro diseño lineal que rellena el espacio restante que no ha sido utilizado por las vistas superior e inferior con altura = 0dp y peso = 1 y establece su gravedad al 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 aportación.

  • Actualizando ExpandableListView con notifyDataSetChanged ()
  • Determina qué VISTA en varias vistas tiene gesto (doble clic, deslizar hacia la izquierda, deslizar hacia la derecha, etc.)?
  • Vista de Android WebView
  • ICS Spinner ("desplegable" en lugar de diálogo) en versiones anteriores de Android
  • ¿Cómo utilizo las clases de "superficie" de Android?
  • Android Cómo obtener una vista previa de una imagen, utilizando su ruta de acceso desde SDcard, desde mi aplicación
  • Cómo obtener la posición de View en onCreateViewHolder
  • Registrarse en la transmisión local dentro de una vista personalizada
  • 3 Solutions collect form web for “¿Hay una forma de compensar una vista desde el centro en Android?”

    Dependiendo del tamaño de pantalla del dispositivo de destino, el relleno por X dp podría moverlo más de sólo un quinto de la altura.

    Puede que tenga que codificar este movimiento usted mismo.

    Pero de nuevo, nada te impide hacer

     <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" /> 

    No utilice el margen, utilice el relleno (tapa), como si:

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

    Eso debería funcionar, aunque no lo he probado!

    Intenta usar el atributo android: layout_toLeftOf = "@ + id / fakeView"

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.