2010-09-29 24 views
11

¿Podemos colocar una pequeña vista sobre otra vista grande? Por ejemplo, tengo una VideoView que está reproduciendo un archivo en segundo plano. Sobre esto, en algún lugar en el medio/esquina, quiero colocar otro ImageView.¿Es posible colocar una vista sobre otra en Android?

Pero en el diseño lineal/relativo, las vistas se pueden ubicar una tras otra o relativ entre sí. Y se desaconseja Absolutelayout. ¿Entonces qué hago?

+1

RelativeLayout funcionará pero se puede utilizar FrameLayout. – bhups

Respuesta

11

FrameLayouts le permiten apilar cada vista encima de la siguiente. Esto también se puede lograr con un RelativeLayout.

+1

¿Podría darme un ejemplo de cualquiera de los casos? No puedo pensarlo. – kiki

+1

@kiki - Google "android FrameLayout" y encontrarás muchos ejemplos. – McStretch

+2

http://stackoverflow.com/questions/6690530/how-to-show-one-layout-on-top-of-the-other-programmatically-in-my-case – nograde

8

El FrameLayout es el ViewGroup más simple y apila el Views en el orden en que están definidos en el diseño XML; el primero será más bajo, y el último estará en la parte superior.

Aquí es un ejemplo donde los View s se compensan para ilustrar mejor el punto:

enter image description here

Aquí es el diseño de XML con los dos superpuestos TextView cajas. El desplazamiento de los dos cuadros se realiza usando android:layout_gravity, mientras que android:gravity es 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> 
1
<?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> 
0

También puede hacerlo mediante el uso de ConstraintLayout una nueva disposición introducida por Google.

ConstraintLayout le permite crear diseños grandes y complejos con una jerarquía de vista plana (sin grupos de vista anidados).

<?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> 
Cuestiones relacionadas