Question

Peut-on placer une petite vue sur une autre grande vue? Par exemple, j'ai un VideoView qui joue un fichier en arrière-plan. Au cours de cela, quelque part dans le coin du milieu de /, je veux placer une autre ImageView.

Mais linéaire / Mise en page relative, vues peut être placé que l'un après l'autre ou par rapport à l'autre, et AbsoluteLayout est déconseillé. Alors, que dois-je faire?

Était-ce utile?

La solution

FrameLayouts vous laissez pile chaque vue sur le dessus de celui ci-dessous. Cela peut aussi être réalisé avec un RelativeLayout.

Autres conseils

Le FrameLayout est le ViewGroup simple et empile les Views dans l'ordre dans lequel ils sont définis en XML de mise en page (ou ajoutés par programme); la première sera plus faible, et le dernier sera sur le dessus.

Voici un exemple où deux Views sont empilés et offset pour mieux illustrer le point:

 entrer image description ici

Voici le code XML de mise en page réelle avec les deux boîtes de TextView se chevauchent. Le décalage des deux boîtes se fait à l'aide android:layout_gravity tout android:gravity est utilisé pour centrer le texte lui-même dans chaque case.

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

Juste au cas où si vous voulez placer une vue sur le dessus d'un ButtonView puis utilisez cette; android:elevation="7dp" pour la vue qui doit être placé au-dessus du bouton.

Vous pouvez aussi le faire en utilisant ConstraintLayout une nouvelle mise en page introduit par google.

  

ConstraintLayout vous permet de créer des mises en page vastes et complexes avec une hiérarchie de vue à plat (pas de groupes de vues imbriquées).

 <?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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top