Diseño de uso común de Android FrameLayout (diseño de marco)

FrameLayout (diseño de marco)

Se puede decir que FrameLayout es el diseño más simple entre los seis diseños. Este diseño abre directamente un área en blanco en la pantalla. Cuando le agregamos controles, se colocarán en esta área de forma predeterminada. La esquina superior izquierda, pero esta El método de diseño no tiene ningún método de posicionamiento, por lo que no hay muchos escenarios de aplicación; el tamaño del diseño del marco está determinado por el subcontrol más grande del control. Si los tamaños de los controles son los mismos, entonces solo Puedes ver el componente superior. Los controles agregados posteriormente sobrescribirán el anterior. Aunque el control se coloca en la esquina superior izquierda de forma predeterminada, ¡también podemos especificar otras ubicaciones a través del atributo layout_gravity!

FrameLayout generalmente no se usa para mostrar contenido múltiple porque su diseño es difícil de ajustar.        

Sin el atributo layout_gravity, se superpondrán varios contenidos; con layout_gravity, se pueden establecer diferentes posiciones.


layout_gravity puede tomar valores:

  • top coloca el objeto encima de su contenedor sin cambiar su tamaño.
  • bottom coloca el objeto en el fondo de su contenedor, sin cambiar su tamaño.
  • left coloca el objeto a la izquierda de su contenedor, sin cambiar su tamaño.
  • right coloca el objeto a la derecha de su contenedor, sin cambiar su tamaño.
  • center_vertical Centra el objeto verticalmente sin cambiar su tamaño. Alineación vertical: Alineado al centro verticalmente.
  • fill_vertical Aumenta el tamaño vertical del objeto cuando es necesario para llenar completamente su contenedor.
  • center_horizontal Centra el objeto horizontalmente sin cambiar su tamaño Alineación horizontal: Centro alineado horizontalmente
  • fill_horizontal aumenta el tamaño horizontal del objeto cuando es necesario para llenar completamente su contenedor.
  • centrar Centra el objeto horizontal y verticalmente sin cambiar su tamaño.
  • fill aumenta el tamaño horizontal y vertical del objeto si es necesario para llenar completamente su contenedor.
  • clip_vertical Opción adicional para recortar el contenido superior y/o inferior de un objeto a lo largo de los lados de su contenedor. El recorte se basa en su configuración de alineación vertical: cuando está alineado arriba, recorta la parte inferior; cuando está alineado abajo, recorta la parte superior; de lo contrario, Cortar la parte superior y abajo Recortar verticalmente
  • clip_horizontal Opción adicional para recortar el contenido izquierdo y/o derecho de un objeto según el borde del contenedor. El recorte se basa en su configuración de alineación horizontal: cuando está alineado a la izquierda, recorta el derecho; cuando está alineado a la derecha, recorta el lado izquierdo; de lo contrario recortar los lados izquierdo y derecho.Recortar horizontalmente

Hay algo que tener en cuenta aquí:

Distinga entre "android:gravity" y "android:layout_gravity".

android:gravity: Es para el control en sí, se utiliza para establecer dónde se debe mostrar el "contenido propio del control" en el "volumen propio del control", el valor predeterminado es el lado izquierdo.
android:layout_gravity: relativo al elemento principal del control, establece la posición del control en su elemento principal.

También hay 2 propiedades especiales:

android: primer planoGravedad Establecer la posición donde se muestra la imagen de primer plano
Android: primer plano Establece la imagen de primer plano del contenedor de diseño del marco (siempre encima de todos los controles secundarios)

Ejemplo:

En una secuencia normal (primero el texto, luego la imagen), la imagen cubriría parte del texto. como:

Código de implementación:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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=".FrameLayoutActivity">
    <!--整体布局为帧布局-->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="帧布局"
        android:textSize="50dp"
        android:gravity="right"/>
    <TextView
        android:layout_width="500px"
        android:layout_height="100px"
        android:text="这是一个图片"
        android:textSize="80px"
        android:textStyle="bold"></TextView>
    <ImageView
        android:layout_width="400px"
        android:layout_height="400px"
        android:src="@mipmap/ic_launcher">
    </ImageView>

</FrameLayout>

Cambie las posiciones del texto y la imagen para que la imagen ya no cubra el texto. como:

Debajo de todo el diseño, agregue el atributo android:foreground. No importa cuántos controles secundarios tenga, la imagen agregada por este atributo los cubrirá todos.

 Código: (La imagen de primer plano la configuré yo mismo y encontré esta imagen yo mismo)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
    android:foreground="@drawable/img_2"
    tools:context=".FrameLayoutActivity">
    <!--整体布局为帧布局-->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="帧布局"
        android:textSize="50dp"
        android:gravity="right"/>
    <TextView
        android:id="@+id/text"
        android:layout_width="500px"
        android:layout_height="100px"
        android:text="这是一个图片"
        android:textSize="80px"
        android:textStyle="bold"></TextView>
    <ImageView
        android:id="@+id/image"
        android:layout_width="400px"
        android:layout_height="400px"
        android:src="@mipmap/ic_launcher">
    </ImageView>

</FrameLayout>

Debido a que este diseño es demasiado difícil de ajustar en su posición, su frecuencia de uso es incluso menor que la del diseño de mesa.

Supongo que te gusta

Origin blog.csdn.net/qq_62277763/article/details/128575465
Recomendado
Clasificación