¿Es posible colocar un punto de vista sobre otro en el androide?
-
26-09-2019 - |
Pregunta
Se puede colocar una pequeña vista sobre otro grande de la visión? Por ejemplo, tengo un VideoView que se reproduce un archivo en el fondo. Por esto, en alguna parte del / la esquina medio, quiero poner otra ImageView.
Pero en Lineal / Disposición relativa, puntos de vista se puede colocar sólo una tras otra, o respecto a la otra, y AbsoluteLayout se desaconsejó. Entonces, ¿qué hago?
Solución
FrameLayouts
dejar que se acumulan cada vista por encima de la de abajo. Esto también se puede lograr con un RelativeLayout
.
Otros consejos
El FrameLayout
es la más simple y apila ViewGroup
la Views
en el orden en que se definen en XML diseño (o agregan mediante programación); La primera será inferior, y el último será en la parte superior.
Este es un ejemplo donde dos Views
se apilan y compensado para ilustrar mejor el punto:
Esta es la disposición real de XML con las dos cajas superpuestas TextView
. El desplazamiento de las dos cajas se realiza mediante android:layout_gravity
mientras android:gravity
se utiliza para centrar el texto en sí mismo dentro de cada cuadro.
<?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>
Sólo en caso de si desea colocar una vista en la parte superior de un ButtonView luego usar este;
android:elevation="7dp"
para la vista que tiene que ser colocado en la parte superior del botón.
También puede hacerlo mediante el uso de ConstraintLayout un nuevo diseño introducido por Google.
ConstraintLayout le permite crear diseños grandes y complejos con una jerarquía de vistas de plano (no hay 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>
<?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/yellow"
>
<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>