Android中view 怎样通过代码设置 layout

Android中view 怎样通过代码设置 layout,第1张

Android 中view设置layout,主要是通过LayoutParams 这个类提供的方法来设置布局类型、边距等属性,如下代码:

RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT) 

lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE) 

lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE) 

btn1.setLayoutParams(lp)

LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout占领的,如果将一个View添加到一个Layout中,最好告诉Layout用户期望的布局方式,也就是将一个认可的layoutParams传递进去。

自己绘制的图形?是自定义view吧?就是继承View然后重写onDraw方法画出来是吧,这个的话你复制这个类的限定名,然后用限定名就可以在布局文件中使用了,比如:

假定你的这个类位于test.test.MyView(包名加类名,就是限定名),然后再布局文件中这样定义:

这样就行了,和普通的控件一定定义id啊,宽高属性,位置什么的,请采纳哦

Android 绘制流程

View :View主要执行layout方法,使用 serFrame 方法来设置本身 View 的四个顶点的位置,确定View本身的位置。

ViewGroup :ViewGroup主要执行onLayout方法,递归遍历所有子View,确定子View的位置。

我们来看ViewRootImpl中的 performLayout() 方法

看到这里,那host.getMeasuredWidth() / host.getMeasuredHeight()是什么?它是直接调用View中的方法,其实就是经过measure后的DecorView的测量宽度和高度。在 Android 自定义控件 measure 中有说明。

2.3.2.1 我们先来看ViewGroup中的 layout() 方法

ViewGroup里面的layout最终会调入到父类View中的layout,View的layout后面讲解。这里可以先告诉大家,最终会调用View的onLayout方法,而ViewGroup的onLayout是抽象方法,所以它的子类LinearLayout必须要实现。

2.3.2.2 我们再来看LinearLayout中的 onLayout() 方法。

2.3.2.3 挑一个纵向的吧,我们再来看LinearLayout中的 layoutVertical() 方法。

2.3.2.4 我们再来看LinearLayout中的 setChildFrame() 方法。

又一次回到了View的layout方法,接下来就看View分发的layout。

我们先来看View中的 layout() 方法。

我们先来看View中的 onLayout() 方法。

空空如也,其实View的布局由父容器决定,所以空实现是正常的,当然也可以在自定义View中进行更改。

《Android 视图模块 全家桶》

Android开发之自定义控件(二)---onLayout详解

自定义View Layout过程 - 最易懂的自定义View原理系列(3)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7884897.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存