android layoutparams,Android LayoutParams用法解析

android layoutparams,Android LayoutParams用法解析ViewGroup LayoutParams 介绍 LayoutParams 携带了子控件针对父控件的信息 告诉父控件如何放置自己 LayoutParams 类也只是简单的描述了宽高 宽和高都可以设置成三种值 1 一个确定的值 2 FILL PARENT 即填满 和父容器一样大小 3 WRAP CONTENT 即包裹住组件就好 每一个 ViewGroup 例如 LinearLayout RelativeLa

ViewGroup.LayoutParams介绍

LayoutParams携带了子控件针对父控件的信息,告诉父控件如何放置自己

LayoutParams类也只是简单的描述了宽高,宽和高都可以设置成三种值:

1,一个确定的值;

2,FILL_PARENT,即填满(和父容器一样大小);

3,WRAP_CONTENT,即包裹住组件就好。

每一个ViewGroup(例如LinearLayout, RelativeLayout, CoordinatorLayout, etc)需要存储有关其孩子view的属性信息。它的孩子view被放在ViewGroup,这些位置信息存储在一个包装类viewgroup.layoutparams对象中。

为了包含一个特定的布局的具体参数,viewgroup使用layoutparams Viewgroup类的子类来存储。

例如

linearlayout.layoutparams

relativelayout.layoutparams

coordinatorlayout.layoutparams

对于margin有一个ViewGroup.MarginLayoutParams类代替ViewGroup.LayoutParams。

获取ViewGroup.LayoutParams

getLayoutParams()方法可以获取ViewGroup.LayoutParams对象。

举例如下

public class ExampleView extends View {

public ExampleView(Context context) {

super(context);

setupView(context);

}

public ExampleView(Context context, AttributeSet attrs) {

super(context, attrs);

setupView(context);

}

public ExampleView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

setupView(context);

}

private void setupView(Context context) {

if (getLayoutParams().height == 50){ // DO NOT DO THIS!

// This might produce NullPointerException

doSomething();

}

}

//…

}

ViewGroup.LayoutParams上下转型

注意LayoutParams携带了子控件针对父控件的信息,告诉父控件如何放置自己,所以要使用相应父控件的LayoutParams。

举例说明,一个LinearLayout包含FrameLayout

错误使用

FrameLayout innerLayout = (FrameLayout)findViewById(R.id.inner_layout);

FrameLayout.LayoutParams par = (FrameLayout.LayoutParams) innerLayout.getLayoutParams();

正确的使用

FrameLayout innerLayout = (FrameLayout)findViewById(R.id.inner_layout);

LinearLayout.LayoutParams par = (LinearLayout.LayoutParams) innerLayout.getLayoutParams();

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224903.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午10:52
下一篇 2026年3月17日 上午10:53


相关推荐

  • MySQL 8.0 新特性:引人注目的哈希连接(Hash Join)

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:不剪发的Tony老师 blog.csdn.net/horses/article/details/1026900…

    2021年6月26日
    81
  • 怎样把cursor卸载干净,重新配置

    怎样把cursor卸载干净,重新配置

    2026年3月16日
    2
  • vue中父组件向子组件传值

    vue中父组件向子组件传值首先在以下案例中,App.vue是父组件,Second-module.vue是子组件。总体来说,父传子就是这四个步骤:父组件的data中定义值,引入并调用子组件,在引用的子组件的标签上通过v-bind指令给子组件传值,子组件通过在data中定义的props属性接收父组件传过来的值然后应用到子组件里。首先,值肯定是定义在父组件中的,供所有子组件共享,所以要在父组件的data中定义值:…

    2022年6月5日
    37
  • Pycharm远程调试设置

    Pycharm远程调试设置注 这个是我研一入学的时候负责阿里云服务器部署的时候 导师要求写一个怎么用 pycharm 连接服务器并学会本地编辑 远端调试代码的说明文档 写文档时间 2019 年 10 月 7 日 准备工作 1 去官网下载 Pycharm 专业版 社区版没有远程调试功能 要序列号 用学校邮箱注册一个 安装在本地 2 去官网下载 Python 解释器 3 6 版本以上 或者 Anaconda 安装在本地本机环境

    2026年3月18日
    2
  • bisect git 使用_git bisect

    bisect git 使用_git bisectgitbisect 命令教程作者 12 阮一峰日期 13 2018 年 12 月 24 日 14 腾讯课堂 NEXT 学院 gitbisect 是一个很有用的命令 用来查找哪一次代码提交引入了错误 它的原理很简单 就是将代码提交的历史 按照两分法不断缩小定位 所谓 两分法 就是将代码历史一分为二 确定问题出在前半部分 还是后半部分 不断执行这个过程 直到范围缩小到某一次代码提交 本文通过一个实例

    2026年3月17日
    2
  • 第二章:activiti工作流连接数据库,和eclipse安装activiti插件

    第二章:activiti工作流连接数据库,和eclipse安装activiti插件第二章:activiti工作流连接数据库,和eclipse安装activiti插件

    2022年4月23日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号