首页 > 其他分享 >安卓之各组件的LayoutParams分析

安卓之各组件的LayoutParams分析

时间:2023-12-13 15:46:44浏览次数:30  
标签:ViewGroup RelativeLayout LayoutParams 安卓 layoutParams 组件 LinearLayout View

文章摘要

         在Android开发中,LayoutParams是一个非常重要的概念,它用于描述View在其父容器中的布局行为。不同的ViewGroup有不同的LayoutParams子类,例如LinearLayout.LayoutParams、RelativeLayout.LayoutParams等。本文将分析各组件的LayoutParams获取方式,区别,并附上示例代码。

正文

ViewGroup.LayoutParams

         ViewGroup.LayoutParams是所有布局参数的基类,它包含了一些通用的布局属性,如width、height等。要获取一个View的LayoutParams,可以调用View的getLayoutParams()方法。
示例代码

//获取

View view = findViewById(R.id.my_view);

ViewGroup.LayoutParams layoutParams = view.getLayoutParams();

//设置

ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);

viewGroup.setLayoutParams(layoutParams);

View.LayoutParams layoutParams = new View.LayoutParams(width, height);

view.setLayoutParams(layoutParams);

ViewGroup.MarginLayoutParams

         ViewGroup.MarginLayoutParams是ViewGroup.LayoutParams的子类,它包含了margin属性,可以用来设置View的外边距。要获取一个View的MarginLayoutParams

可以将View的LayoutParams强制转换为MarginLayoutParams。

示例代码

View view = findViewById(R.id.my_view);

ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

LinearLayout.LayoutParams

         LinearLayout.LayoutParams是LinearLayout特有的布局参数类,它继承自ViewGroup.MarginLayoutParams。要获取一个LinearLayout中子View的LayoutParams,可以将子View的LayoutParams强制转换为LinearLayout.LayoutParams。
示例代码

LinearLayout linearLayout = findViewById(R.id.my_linear_layout);

for (int i = 0; i< linearLayout.getChildCount(); i++) {

View childView = linearLayout.getChildAt(i);

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) childView.getLayoutParams();

}

 

RelativeLayout.LayoutParams

         RelativeLayout.LayoutParams是RelativeLayout特有的布局参数类,它继承自ViewGroup.MarginLayoutParams。要获取一个RelativeLayout中子View的LayoutParams,可以将子View的LayoutParams强制转换为RelativeLayout.LayoutParams。
示例代码

RelativeLayout relativeLayout = findViewById(R.id.my_relative_layout);

for (int i = 0; i< relativeLayout.getChildCount(); i++) {

View childView = relativeLayout.getChildAt(i);

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) childView.getLayoutParams();

}

ConstraintLayout.LayoutParams(约束布局参数)

         允许通过约束条件来精确控制视图的位置和大小。

FrameLayout.LayoutParams

XML 布局中直接设置

         在 <View> 标签内使用 android:layout_width 和 android:layout_height 属性来设置宽度和高度。

在代码中动态设置

         通过 new FrameLayout.LayoutParams() 构造器创建一个对象,并设置其宽度和高度。

WindowManager.LayoutParams

XML 布局中不适用

         因为 WindowManager 是用来管理系统级别的窗口,这些窗口通常不在 XML 布局文件中定义。

在代码中动态设置

         通过 new WindowManager.LayoutParams() 构造器创建一个对象,并设置其类型、尺寸和其他属性。

WindowManager.LayoutParams可以通过以下方式获取:

WindowManager.LayoutParams layoutParams = getWindow().getAttributes();

Dialog的WindowManager.LayoutParams可以通过以下方式获取:

WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();

LinearLayoutManager.LayoutParams

示例代码

LinearLayoutManager.LayoutParams layoutParams = (LinearLayoutManager.LayoutParams) recyclerView.getLayoutManager().generateDefaultLayoutParams();

RecyclerView.LayoutParams

XML 布局中不适用

         因为 RecyclerView 里面的子 View 是由 Adapter 动态生成的,不需要在 XML 布局中定义。

在代码中动态设置

         通过 new RecyclerView.LayoutParams() 构造器创建一个对象,并设置其宽度、高度和其他属性。

GridLayoutManager.LayoutParams

XML 布局中不适用

         因为 GridLayoutManager 里面的子 View 是由 Adapter 动态生成的,不需要在 XML 布局中定义。

在代码中动态设置

         通过 new GridLayoutManager.LayoutParams() 构造器创建一个对象,并设置其宽度、高度和其他属性。

Fragment的LayoutParams

         Fragment的LayoutParams可以通过以下方式获取:
ViewGroup.LayoutParams layoutParams = fragmentView.getLayoutParams();

总结

         在Android开发中,不同的ViewGroup有不同的LayoutParams子类,要获取一个View的LayoutParams,可以调用View的getLayoutParams()方法。对于特定的布局容器,如LinearLayout和RelativeLayout,需要将View的LayoutParams强制转换为相应的子类,如LinearLayout.LayoutParams和RelativeLayout.LayoutParams。

         Android 的 LayoutParams 是实现视图布局的关键组成部分。它们决定了每个视图在屏幕上的位置和大小。根据使用的布局容器不同,有多种不同的 LayoutParams 类型可供选择。在编写应用时,开发者需要了解每种 LayoutParams 的特性和用法,以便于正确地配置视图的布局。同时,在处理复杂的用户界面时,理解如何在代码中动态设置 LayoutParams 是非常重要的。本文对各种常见的 LayoutParams 类型进行了概述,并分析了它们之间的区别。希望这有助于开发者更好地理解和使用 Android 的布局系统。

标签:ViewGroup,RelativeLayout,LayoutParams,安卓,layoutParams,组件,LinearLayout,View
From: https://www.cnblogs.com/hxznfuture/p/17898845.html

相关文章

  • springboot+VUE——mybatis分页和Element Plus的分页组件实践
    分页只有基础的分页功能,跳转和动态选择每页展示多少条数据的功能可以参考ElementPlus的分页组件自行配置并且传入相应的方法即可!<scriptlang="ts"setup>/***分页变量数据*/constpagination=ref({ current_page:1, // 当前页码,此处默认为第一页 total_data:0......
  • RecyclerView组件强化——设置rv最大高度,显示滑动条,跳到最后子view
     意义:RecyclerView基础就LinearLayout排列子view。需要扩展它的最大高度,滑动条,跳到最后子view等1.设置最大高度:recycvlerView设置最大高度需求在:选取不同数据后需要一个Rv来展示所选数据。但布局的高度是有限的,导致rv不能设置自适应来无限增高intmaxH......
  • EditText组件强化
    意义:基础EditText组件和简陋,需要额外设置background:设置背景去除下划线。(@shape/xxxx)inputType:输入类型,文本,密码,数字(text)imeOptions:软键盘确定类型。(actionDone)cursorVisible:能否显示光标(true|false)focusable:能否通过键盘获取焦点(true|false)f......
  • 5分钟搞懂Kubernetes:轻松理解所有组件
    之前我曾经提到了一系列关于服务网格的内容。然而,我意识到有些同学可能对Kubernetes的了解相对较少,更不用说应用服务网格这个概念了。因此,今天我决定带着大家快速理解Kubernetes中的一些专有名词,以便在短时间内入门,并减少学习的时间。我将在接下来的5分钟内为你介绍这些名词,希望你......
  • 安卓读写文件的方法以及优劣分析
    文章摘要    在Android开发中,数据的存储和读取是应用程序中常见的操作之一。本文将详细介绍Android中读写文件的方法,并对其优劣进行分析。同时,将附上相应的实现代码,以便读者更好地理解。正文使用Java的IO流    在Android中,我们可以使用Java的文件IO类来读取和写入本地文件......
  • Android用Dialog作遮照层组件
    1Dialog作蒙版,多层遮罩,布局编写,背景点击,背景样式,,2EditText不可点击,隐藏光标,键盘隐藏,多行显示,3RecyclerView设置最大高度,滚动条显示,4.自定义单选框5.dkVideoPlay6.pdf意义:Android里使用Dialog组件作为遮罩层步骤:1.继承DialogFragment类2.重写onCreate() ......
  • 5分钟搞懂Kubernetes:轻松理解所有组件
    之前我曾经提到了一系列关于服务网格的内容。然而,我意识到有些同学可能对Kubernetes的了解相对较少,更不用说应用服务网格这个概念了。因此,今天我决定带着大家快速理解Kubernetes中的一些专有名词,以便在短时间内入门,并减少学习的时间。我将在接下来的5分钟内为你介绍这些名词,希望你......
  • 项目开发之vue中如何刷新子组件,重置组件,重新加载子组件
    项目场景:在父组件循环数据列表中,列表中有事件点击打开某个子组件;父组件中要更新子组件的值问题描述在父组件循环数据列表中,点击打开某个子组件,A数据打开子组件后,B数据再打开子组件,此时子组件中会有缓存A数据。原因分析:子组件没有刷新,还是停留在上一个数据缓存解决方案:给组件添......
  • javaSwing的日期组件
    先看效果:1JToolBarjToolBar=newJToolBar();23DptLocalDatePickersearchDate=newDptLocalDatePicker(null,DateTimeFormatter.ofPattern("yyyy-MM-dd")){4@Override5publicDimensiongetMaximumSize(){......
  • DevExpress WinForms Pivot Grid组件,一个类似Excel的数据透视表控件(二)
    界面控件DevExpressWinForms的PivotGrid组件是一个类似Excel的数据透视表控件,用于多维(OLAP)数据分析和跨选项卡报表。在上文中(点击这里回顾>>)我们介绍了DevExpressWinFormsPivotGrid组件的性能、分析服务、数据塑造能力等,本文将继续介绍该组件的其他功能,欢迎持续关注我们哦~......