Domanda

Possiamo mettere una piccola vista su un altro grande punto di vista? Per esempio, ho un VideoView che sta svolgendo un file in background. Durante questo, da qualche parte nel / angolo di mezzo, voglio inserire un altro ImageView.

Ma in Lineare / Layout relativo, viste può essere eseguito solo uno dopo l'altro o l'uno rispetto all'altro, e AbsoluteLayout è sconsigliato. Allora, cosa devo fare?

È stato utile?

Soluzione

FrameLayouts consentono accumulano ogni vista in cima a quella sottostante. Ciò può essere ottenuto anche con un RelativeLayout.

Altri suggerimenti

Il FrameLayout è il ViewGroup semplice e impila il Views nell'ordine che stanno definiti nel layout XML (o aggiunti di programmazione); Il primo sarà più bassa, e l'ultima sarà in cima.

Ecco un esempio in cui due Views vengono impilati e offset a meglio illustrare il punto:

 entrare descrizione dell'immagine qui

Ecco l'XML effettiva disposizione con i due sovrapposte caselle TextView. L'offset delle due scatole è fatto usando android:layout_gravity mentre android:gravity viene utilizzata per la centratura del testo stesso all'interno di ciascuna casella.

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

Nel caso in cui, se si desidera inserire una vista sulla cima di una ButtonView quindi utilizzare questo; android:elevation="7dp" per la vista che deve essere posizionato sulla parte superiore del pulsante.

È anche possibile farlo utilizzando ConstraintLayout un nuovo layout introdotto da google.

  

ConstraintLayout consente di creare layout di grandi e complessi, con una gerarchia vista piatta (nessun annidati gruppi di vista).

 <?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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top