绝对布局AbsoluteLayout

public class AbsoluteLayout extends ViewGroup
  • java.lang.Object
    • android.view.View
      • android.view.ViewGroup
        • android.widget.AbsoluteLayout

直接子类WebView

此类不赞成使用。推荐使用 FrameLayout,RelativeLayout 或者定制的 layout 代替。

概述


让你指定子元素的 xy 精确坐标的布局。绝对布局缺乏灵活性,在没有绝对定位的情况下相比其他类型的布局更难维护。 


公共方法

public ViewGroup.LayoutParams generateLayoutParams (AttributeSet attrs)

返回一组新的基于所支持的属性集的布局参数

参数attrs  构建 layout 布局参数的属性集合

返回值一个 ViewGroup.LayoutParams 的实例或者它的一个子类



受保护方法

protected ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

返回一组合法的受支持的布局参数。

当一个 ViewGroup 传递一个布局参数没有通过checkLayoutParams(android.view.ViewGroup.LayoutParams)检测的视图时,此方法被调用。此方法会返回一组新的适合当前 ViewGroup 的布局参数,可能从指定的一组布局参数中复制适当的属性。

参数p  被转换成一组适合当前 ViewGroup 的布局参数

返回值an instance of V iewGroup.LayoutParams or one of its descendants 一个 ViewGroup.LayoutParams 的实例或者其中的一个子节点


protected boolean checkLayoutParams (ViewGroup.LayoutParams p)

检测是不是 AbsoluteLayout.LayoutParams 的实例


protected ViewGroup.LayoutParams generateDefaultLayoutParams ()
返回一组宽度为 WRAP_CONTENT,高度为 WRAP_CONTENT,坐标是(0,0)的布局参数

返回值一组默认的布局参数或 null 值


protected void onLayout (boolean changed, int l, int t, int r, int b)
在此视图 view 给他的每一个子元素分配大小和位置时调用。派生类可以重写此方法并且重新安排他们子类的布局。

参数changed 这是当前视图 view 的一个新的大小或位置

  • l 相对于父节点的左边位置
  • t 相对于父节点的顶点位置
  • r 相对于父节点的右边位置
  • b 相对于父节点的底部位置
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
测量视图以确定其内容宽度和高度。此方法被 measure(int, int)调用。需要被子类重写以提供对其内容准确高效的测量。

约定:当重写此方法时,你必须调用 setMeasuredDimension(int, int)来保存当前视图 view的宽度和高度。不成功调用此方法将会导致一个 IllegalStateException 异常,是由 measure(int, int)抛出。所以调用父类的 onMeasure(int, int)方法是必须的。

父类的实现是以背景大小为默认大小,除非 MeasureSpec(测量细则)允许更大的背景。子类可以重写 onMeasure(int,int)以对其内容提供更佳的尺寸。

如果此方法被重写,那么子类的责任是确认测量高度和测量宽度要大于视图 view 的最小宽度和最小高度(getSuggestedMinimumHeight() and getSuggestedMinimumWidth()),使用这两个方法可以取得最小宽度和最小高度。

参数

  • widthMeasureSpec 强 加 于 父 节 点 的 横 向 空 间 要 求 。 要 求 是 使 用View.MeasureSpec 进行编码
  • heightMeasureSpec 强 加 于 父 节 点 的 纵 向 空 间 要 求 。 要 求 是 使 用View.MeasureSpec 进行编码。



<AbsoluteLayout
android:id="@+id/AbsoluteLayout01" android:layout_height="wrap_content"
android:layout_width="fill_parent" > 
<TextView
android:text="TextView01" android:id="@+id/TextView01"
android:layout_height="wrap_content" android:layout_y="10px"
android:layout_width="wrap_content" android:layout_x="110px">
</TextView>
</AbsoluteLayout>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用绝对布局AbsoluteLayout)来动态创建并层叠视图(View)在Android应用中。下面是一个示例代码,演示如何使用绝对布局动态创建和层叠视图: ```java // 创建绝对布局 AbsoluteLayout absoluteLayout = new AbsoluteLayout(context); absoluteLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); // 创建第一个视图 TextView textView1 = new TextView(context); textView1.setText("View 1"); AbsoluteLayout.LayoutParams params1 = new AbsoluteLayout.LayoutParams( AbsoluteLayout.LayoutParams.WRAP_CONTENT, AbsoluteLayout.LayoutParams.WRAP_CONTENT, 100, 100); // 设置视图的位置 textView1.setLayoutParams(params1); absoluteLayout.addView(textView1); // 创建第二个视图 TextView textView2 = new TextView(context); textView2.setText("View 2"); AbsoluteLayout.LayoutParams params2 = new AbsoluteLayout.LayoutParams( AbsoluteLayout.LayoutParams.WRAP_CONTENT, AbsoluteLayout.LayoutParams.WRAP_CONTENT, 200, 200); // 设置视图的位置 textView2.setLayoutParams(params2); absoluteLayout.addView(textView2); // 将绝对布局添加到父容器中 ViewGroup parentView = findViewById(R.id.parent_view); // 替换为你的父容器视图ID parentView.addView(absoluteLayout); ``` 在这个示例中,我们首先创建了一个绝对布局对象 `absoluteLayout`,并设置了其布局参数为匹配父容器大小。然后,我们创建了两个文本视图 `textView1` 和 `textView2`,并分别设置了它们在绝对布局中的位置。最后,我们将这两个视图添加到了绝对布局中,并将绝对布局添加到父容器中。 注意:绝对布局AbsoluteLayout)在较新的Android版本中已被弃用,推荐使用其他布局方式,比如相对布局(RelativeLayout)或线性布局(LinearLayout)来实现动态创建和层叠视图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值