¿Es posible colocar una vista sobre otra en android?
¿Podemos colocar una pequeña vista sobre otra vista grande? Por ejemplo, tengo un VideoView que está reproduciendo un archivo en segundo plano. Sobre esto, en algún lugar en el centro / esquina, quiero colocar otro ImageView.
Pero en Linear / Relative Layout, las vistas se pueden colocar sólo una después de otra o relativ entre sí. Y Absolutelayout es desaconsejado. ¿Entonces qué hago?
- Cómo agregar el encabezado a la vista de lista En Android
- ¿Cómo alinear vistas en el centro de otra línea de base de vistas?
- RemoteViews setLayoutParams?
- Guardar agregados mediante programación Vistas sobre el cambio de orientación?
- Adición de vistas a un grupo de vistas de Android mediante programación
- Llamar al diálogo de Android sin que desaparezca el fondo
- Clone textview para anexarlo a un ViewGroup
- Android: ¿Qué precaución debo tener al usar la propiedad setTag () de View?
- Lista de botones en Android
- Android: cómo tener una imagen de fondo centrada en una vista
- Botones para rellenar el ancho cuando se utiliza TableLayout
- Android - ¿cuándo se llama a performTraversals?
- Cual es la diferencia entre getTop y getY
FrameLayouts
permiten apilar cada vista en la parte superior de la siguiente. Esto también se puede lograr con RelativeLayout
.
FrameLayout
es el ViewGroup
más ViewGroup
y apila las Views
en el orden en que están definidas en XML de presentación; La primera será menor, y la última estará en la parte superior.
A continuación se muestra un ejemplo en el que las View
s están desplazadas para ilustrar mejor el punto:
Aquí está el XML de presentación con los dos TextView
s superpuestos. El desplazamiento se realiza con android:layout_gravity
mientras android:gravity
es para centrar el texto en sí dentro de cada TextView
.
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="100dp" android:layout_height="100dp"> <TextView android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="top|left" android:background="@android:color/holo_blue_light" android:gravity="center" android:text="First is below"/> <TextView android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="bottom|right" android:background="@android:color/holo_green_light" android:gravity="center" android:text=" Last is on top"/> </FrameLayout>
<?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" android:padding="@dimen/dp_20" android:background="@color/yellowt" > <VideoView android:id="@+id/videoview" android:layout_width="wrap_content" android:layout_centerInParent="true" android:layout_height="300dp" android:contentDescription="@string/app_name" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/camera" android:layout_margin="30dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:id="@+id/imageView" /> </RelativeLayout>
También puedes hacerlo usando ConstraintLayout un nuevo diseño introducido por google.
ConstraintLayout permite crear diseños grandes y complejos con una jerarquía de vista plana (sin grupos de vistas anidadas).
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="4" tools:context="com.edalat.example.MainActivity"> <VideoView android:id="@+id/videoView" android:layout_width="283dp" android:layout_height="349dp" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="24dp" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="24dp" android:layout_marginRight="24dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="24dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintHorizontal_bias="0.509"/> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@mipmap/ic_launcher" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="24dp" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="24dp" android:layout_marginLeft="24dp" app:layout_constraintLeft_toLeftOf="parent" android:layout_marginRight="24dp" app:layout_constraintRight_toRightOf="parent"/> </android.support.constraint.ConstraintLayout>
- Android C2DM: Duplicar mensaje para el mismo dispositivo y la aplicación
- Compile 'com.android.support:multidex:1.0.1' sucedió mal: todas las bibliotecas de soporte técnico de android deben usar la misma versión