【Android从零单排系列三十三】《Android布局介绍——FrameLayout》

目录

前言

FrameLayout基本介绍

FrameLayout%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95-toc" style="margin-left:40px;">二 FrameLayout使用方法

FrameLayout常见属性及方法

FrameLayout简单案例

五 总结


前言

小伙伴们,在上文中我们介绍了Android布局AbsoluteLayout,本文我们继续盘点介绍Android开发中另一个常见的布局,帧布局FrameLayout

FrameLayout基本介绍

FrameLayout是Android中的一种布局容器,它允许在单个视图组中重叠放置子视图。FrameLayout会将所有子视图堆叠在同一个位置上,后添加的子视图会覆盖先前添加的子视图。

FrameLayout%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95">二 FrameLayout使用方法

1.在XML布局文件中定义FrameLayout

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 添加子视图 -->

</FrameLayout>

2.在FrameLayout中添加子视图: 可以在FrameLayout中添加多个子视图,后添加的子视图会覆盖先前添加的子视图。可以通过设置子视图的属性来调整其位置和大小。

<FrameLayout
    ...
    >
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello, World!"
        android:layout_gravity="center" />
</FrameLayout>

3.调整子视图的位置和大小: 可以使用android:layout_gravity属性来指定子视图在FrameLayout中的对齐方式,例如居中、靠左等。还可以使用其他布局参数和属性来调整子视图的位置和大小。

4.在代码中操作FrameLayout和子视图: 在代码中可以通过findViewById()方法获取FrameLayout和子视图的引用,并进行相应的操作,例如设置可见性、更改位置、监听点击事件等

FrameLayout frameLayout = findViewById(R.id.frameLayout);
ImageView imageView = findViewById(R.id.imageView);
TextView textView = findViewById(R.id.textView);

// 设置子视图可见性
imageView.setVisibility(View.VISIBLE);
textView.setVisibility(View.GONE);

// 更改子视图的LayoutParams
FrameLayout.LayoutParams layoutParams =
        (FrameLayout.LayoutParams) imageView.getLayoutParams();
layoutParams.width = 200;
layoutParams.height = 200;
imageView.setLayoutParams(layoutParams);

// 监听子视图的点击事件
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 处理点击事件
    }
});

FrameLayout常见属性及方法

常见属性:

  • android:foreground:设置前景视图,可以是颜色、Drawable等。
  • android:foregroundGravity:设置前景视图的对齐方式。
  • android:measureAllChildren:指定是否测量所有子视图,默认为false。

常用方法:

  • addView(View child):向FrameLayout中添加子视图。
  • removeView(View child):从FrameLayout中移除指定的子视图。
  • removeAllViews():从FrameLayout中移除所有子视图。
  • getChildAt(int index):获取指定位置的子视图。
  • getChildCount():获取子视图的数量。
  • bringChildToFront(View child):将指定的子视图置于顶层。
  • setForeground(Drawable drawable):设置前景视图。
  • setForegroundGravity(int gravity):设置前景视图的对齐方式。
  • setMeasureAllChildren(boolean measureAll):设置是否测量所有子视图。

FrameLayout简单案例

下面是一个简单的FrameLayout案例,展示了如何在FrameLayout中添加和切换不同的子视图:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/frameLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:src="@drawable/image1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/textView"
        android:text="Hello, World!"
        android:textSize="24sp"
        android:textColor="#FFFFFF"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center" />
</FrameLayout>

这个布局文件中包含一个FrameLayout作为父容器,其中有一个ImageView和一个TextView作为子视图。ImageView显示一张图片,TextView显示文本内容。

然后,在代码中可以通过findViewById()方法获取FrameLayout和子视图的引用,并进行操作,例如切换不同的子视图:

FrameLayout frameLayout = findViewById(R.id.frameLayout);
ImageView imageView = findViewById(R.id.imageView);
TextView textView = findViewById(R.id.textView);

// 切换到ImageView
frameLayout.bringChildToFront(imageView);

// 或者切换到TextView
frameLayout.bringChildToFront(textView);

上述代码演示了如何使用bringChildToFront()方法将指定的子视图置于顶层,从而实现在FrameLayout中切换不同的子视图。

五 总结

总结来说,FrameLayout是一种简单且灵活的布局容器,适用于在单个位置上重叠显示不同的子视图。


http://www.niftyadmin.cn/n/1005722.html

相关文章

NLP学习笔记(三)

一&#xff1a;分类方法 &#xff08;一&#xff09;逻辑回归 最简单的方法就是将分类问题视为回归问题&#xff0c;采用逻辑回归计算分类的边界。 &#xff08;二&#xff09;softmax回归 softmax的前向传播过程可以分为以下三步&#xff1a; h W T x y ^ s o f t m a …

nvme ssd挂载

内置 f2进入biossystem configuration下将sata operation右侧设置为AHCIboost sequence中右侧boot list option改为UEFI后续进行磁盘挂载 #查看新添加的盘符 fdisk -l #格式化硬盘文件系统 mkfs -t ext4 /dev/nvme #挂载硬盘 mkdir /nvme mount /dev/nvme /nvme #查看UUID su…

Android Audio - AAudio框架

参考文献&#xff1a; Android AAudio 的实现分析_hanpfei的博客-CSDN博客 Android AAudio详解 - 简书 Android R音频输出问题处理随笔_audiodevicebroker_嘴巴吃糖了的博客-CSDN博客

登录远程Linux桌面

远程桌面连接主要使用两种协议&#xff0c;一种是Windows上RDP协议&#xff0c;第二种是VNC协议&#xff0c;从使用效果来看&#xff0c;vnc更优秀。 一、VNC 使用x11vnc 1.安装x11vnc sudo apt install x11vnc 2.启动x11vnc x11vnc -passwd orangepi -display :0 -forever…

前端知识学习

以下是一个使用Angular 13实现的示例代码&#xff0c;实现了当div出现滚动条时给div底部加上阴影效果&#xff0c;并随着滚动条的拖动保留阴影效果&#xff0c;当滚动条拉到最后时&#xff0c;阴影效果消失。 首先&#xff0c;在你的组件的HTML模板中添加以下代码&#xff1a;…

多元分类预测 | Matlab鲸鱼算法(WOA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,WOA-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab鲸鱼算法(WOA)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,WOA-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab…

ARM第五章平时作业

第 5 章 S3C2440 嵌入式系统&#xff08; 共 63 分 &#xff09; 一、简述启动代码存储在 NAND Flash 存储器上时&#xff0c; S3C2440 的启动过程。 &#xff08; 6 分&#xff09; 为了支持 NAND Flash 的 boot loader &#xff0c; S3C2440A 配备了一个内部的…

华为云Could not connect to ‘121.37.92.110‘ (port 22): Connection failed.

今天在使用xshell连接服务器的时候&#xff0c;一直报错&#xff0c;爆的心态都炸了&#xff1a; 在输入主机和密码都正确的情况下&#xff0c;还是连接不上服务器&#xff1a; 后来经过长时间摸索&#xff0c;发现xshell软件要通过镜像系统来操作&#xff0c;而自己买的服务器…