codestory

Die Anleitung zu Android FrameLayout

  1. Android FrameLayout
  2. Das Beispiel FrameLayout

1. Android FrameLayout

FrameLayout ist ein einfaches Layout. Es kann eine oder mehrere untergeordnete View enthalten, die sich überlappen können. Daher wird das Attribut android:layout_gravity verwenden um die untergeordneten View zu positionieren.
Insbesondere hat FrameLayout 9 Schwerkraftbereiche, die in der folgenden Abbildung dargestellt sind. Achtung: Es handelt sich um die imaginäre Bereiche. Das bedeutet nicht, dass die Oberfläche von FrameLayout in 9 Teilen unterteilt wird.
Wenn ein View in dem FrameLayout hinzugefügt wird, liegt diese standardmäßig in der Schwerkraft von "left|top". Schauen Sie sich das folgende Beispiel an. Ich füge dem FrameLayout 2 Button hinzu. Standardmäßig liegen sie in der Schwerkraft von "left|top" und Sie sehen, dass sie sich überlappen.
Verwenden Sie das Attribut android:layout_gravity um die Position von button anzupassen.
Der Wert vom android:layout_gravity ist die Verbindung eines der folgenden Werten:
Constant in Java
Value
Description
Gravity.LEFT
left
Gravity.CENTER_HORIZONTAL
center_horizontal
Gravity.RIGHT
right
Gravity.CLIP_HORIZONTAL
clip_horizontal
Gravity.FILL_HORIZONTAL
fill_horizontal
Gravity.TOP
top
Gravity.CENTER_VERTICAL
center_vertical
Gravity.BOTTOM
bottom
Gravity.CLIP_VERTICAL
clip_vertical
Gravity.FILL_VERTICAL
fill_vertical
Gravity.START
start
Gravity.END
end
Gravity.CENTER
center
Gravity.FILL
fill
Unten ist das die Abbildung, dafür ein VideoView und ein MediaController in einem FrameLayout gestellt werden. Dies spart Anwendungsraum und bietet dem Benutzer eine bessere Benutzererfahrung.

2. Das Beispiel FrameLayout

In diesem Beispiel werde ich ein ImageView und 2 TextView in einem FrameLayout stellen, danach stellen Sie ihre Position durch das Attribut android:layout_gravity ein.
Schauen Sie das Beispiel vor:
Show in Portraint screen
Show in Landscape screen
OK. Im Android Studio erstellen Sie ein neues Projekt:
  • File > New > New Project > Empty Activity
    • Name: FrameLayoutExample
    • Package name: org.o7planning.framelayoutexample
    • Language: Java
Bereiten Sie eine Datei-Foto vor:
halong.png
Kopieren Sie die Datei Foto in dem Verzeichnis "drawable" vom Projekt :
Entwerfen Sie die Interface der Anwendung:
Legen Sie die Einschränkungen (constraint) für FrameLayout fest:
Legen Sie die wichtigen Attribute für ImageView fest um sicherzustellen, dass es FrameLayout erfüllt.
* imageView *
<ImageView
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    app:srcCompat="@drawable/halong" />
Und legen Sie das Attribut android:layout_gravity für TextView fest:
Legen Sie text, textColor für TextView fest:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:scaleType="fitXY"
            app:srcCompat="@drawable/halong" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="top|left"
            android:text="Halong Bay, Vietnam"
            android:textColor="#FFFFFF" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:text="Photo by intrepidtravel.com"
            android:textColor="#FFFFFF" />

    </FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.framelayoutexample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Gravity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

Anleitungen Android

Show More