Android8布局(ViewGroup)及xml属性

共有属性

集成自父类,所有控件公有属性


1. View

此类表示用户界面组件的基本构建块。视图占据屏幕上的矩形区域,负责绘图和事件处理。View是窗口小部件的基类,用于创建交互式UI组件(按钮,文本字段等)。

所有数图的超类,View的属性是所有视图控件都一定会有的属性

View 属性

  • android:accessibilityHeading 此视图是否是可访问性标题。

  • android:accessibilityLiveRegion 向可访问性服务指示在此视图更改时是否应通知用户。

  • android:accessibilityTraversalAfter 设置视图的id,之后在可访问性遍历中访问此视图。

  • android:accessibilityTraversalBefore 设置在可访问性遍历中访问此视图之前的视图的ID。

  • android:alpha 视图的alpha属性,作为0(完全透明)和1(完全不透明)之间的值。

  • android:autofillHints 描述视图的内容,以便自动填充服务可以填写适当的数据。

  • android:autofilledHighlight 可绘制在视图上绘制以将其标记为自动填充
    可以是对形式为“ ”的另一种资源的引用,也可以是“ ” 形式的主题属性。 @[+][package:]type/name?[package:]type/name

  • android:background 一个drawable用作背景。

  • android:backgroundTint 色调适用于背景。

  • android:backgroundTintMode 混合模式用于应用背景色调。

  • android:clickable 定义此视图是否对单击事件做出反应。

  • android:contentDescription 定义简要描述视图内容的文本。

  • android:contextClickable 定义此视图是否对上下文单击事件做出反应。

  • android:defaultFocusHighlightEnabled 此视图在聚焦时是否应使用默认焦点突出显示,但在其背景中未定义。 R.attr.state_focused

  • android:drawingCacheQuality 定义半透明绘图缓存的质量。

  • android:duplicateParentState 当此属性设置为true时,视图将从其直接父级而不是从其自身获取其可绘制状态(聚焦,按下等)。

  • android:elevation 基础z视图的深度。

  • android:fadeScrollbars 定义在不使用时是否淡出滚动条。

  • android:fadingEdgeLength 定义渐变边缘的长度。

  • android:filterTouchesWhenObscured 指定当视图的窗口被另一个可见窗口遮挡时是否过滤触摸。

  • android:fitsSystemWindows 布尔内部属性,用于根据系统窗口(如状态栏)调整视图布局。

  • android:focusable 控制视图是否可以获得焦点。

  • android:focusableInTouchMode 布尔值,用于控制视图在触摸模式下是否可以获得焦点。

  • android:focusedByDefault 此视图是否为默认焦点视图。

  • android:forceHasOverlappingRendering 此视图是否具有在绘制时可能重叠的元素。

  • android:foreground 定义drawable以绘制内容。

  • android:foregroundGravity 定义要应用于前景drawable的重力。

  • android:foregroundTint 色调适用于前景。

  • android:foregroundTintMode 混合模式用于应用前景色调。

  • android:hapticFeedbackEnabled 布尔值,用于控制视图是否应为长按等事件启用触觉反馈。

  • android:id 为此视图提供标识符名称,以便稍后使用或 检索它。 View.findViewById()Activity.findViewById()

  • android:importantForAccessibility 描述此视图对可访问性是否重要。

  • android:importantForAutofill 提示Android系统是否应将与此视图关联的视图节点包含在用于自动填充目的的视图结构中。

  • android:isScrollContainer 如果视图将用作滚动容器,则设置此项,这意味着可以调整其大小以缩小其整个窗口,以便为输入方法提供空间。

  • android:keepScreenOn 控制视图窗口是否应在可见时保持屏幕开启。

  • android:keyboardNavigationCluster 此视图是否是键盘导航集群的根。

  • android:layerType 指定支持此视图的图层类型。

  • android:layoutDirection 定义布局绘图的方向。

  • android:longClickable 定义此视图是否对长按事件做出反应。

  • android:minHeight 定义视图的最小高度。

  • android:minWidth 定义视图的最小宽度。

  • android:nextClusterForward 定义下一个键盘导航集群。

  • android:nextFocusDown 定义下一个视图,以便在下一个焦点为焦点时提供焦点 如果引用引用的视图不存在或者是不可见的层次结构的一部分,则 在访问引用时将产生结果。 View.FOCUS_DOWNRuntimeException

  • android:nextFocusForward 定义下一个视图,以便在下一个焦点为焦点时提供焦点 如果引用引用的视图不存在或者是不可见的层次结构的一部分,则 在访问引用时将产生结果。 View.FOCUS_FORWARDRuntimeException

  • android:nextFocusLeft 定义下一个视图,以便在下一个焦点时关注 。 View.FOCUS_LEFT

  • android:nextFocusRight 定义下一个视图,以便在下一个焦点为焦点时提供焦点 如果引用引用的视图不存在或者是不可见的层次结构的一部分,则 在访问引用时将产生结果。 View.FOCUS_RIGHTRuntimeException

  • android:nextFocusUp 定义下一个视图,以便在下一个焦点为焦点时提供焦点 如果引用引用的视图不存在或者是不可见的层次结构的一部分,则 在访问引用时将产生结果。 View.FOCUS_UPRuntimeException

  • android:onClick 单击视图时要调用的此View上下文中方法的名称。

  • android:outlineAmbientShadowColor 设置当视图具有正Z或高程值时绘制的环境阴影的颜色。

  • android:outlineSpotShadowColor 设置当视图具有正Z或高程值时绘制的专色阴影的颜色。

  • android:padding 设置所有四条边的填充(以像素为单位)。

  • android:paddingBottom 设置底边的填充(以像素为单位); 看。 R.attr.padding

  • android:paddingEnd 设置结束边缘的填充(以像素为单位); 看。 R.attr.padding

  • android:paddingHorizontal 设置左右边缘的填充(以像素为单位); 看 。 R.attr.padding

  • android:paddingLeft 设置左边缘的填充(以像素为单位); 看。 R.attr.padding

  • android:paddingRight 设置右边缘的填充(以像素为单位); 看。 R.attr.padding

  • android:paddingStart 设置起始边缘的填充(以像素为单位); 看。 R.attr.padding

  • android:paddingTop 设置顶边的填充(以像素为单位); 看。 R.attr.padding

  • android:paddingVertical 设置顶部和底部边缘的填充(以像素为单位); 看 。 R.attr.padding

  • android:requiresFadingEdge 定义滚动时哪些边应该褪色。

  • android:rotation 视角的旋转,以度为单位。

  • android:rotationX 围绕x轴旋转视图,以度为单位。

  • android:rotationY 绕y轴旋转视图,以度为单位。

  • android:saveEnabled 如果为false,则在冻结该视图时不会保存任何状态。

  • android:scaleX x方向视图的比例。

  • android:scaleY y方向视图的比例。

  • android:scrollIndicators 定义可以滚动视图时应显示的滚动指示符。

  • android:scrollX 初始水平滚动偏移,以像素为单位。

  • android:scrollY 初始垂直滚动偏移(以像素为单位)。

  • android:scrollbarAlwaysDrawHorizontalTrack 定义是否应始终绘制水平滚动条轨道。

  • android:scrollbarAlwaysDrawVerticalTrack 定义是否应始终绘制垂直滚动条轨道。

  • android:scrollbarDefaultDelayBeforeFade 定义滚动条在淡出之前等待的延迟(以毫秒为单位)。

  • android:scrollbarFadeDuration 定义滚动条淡出所用的延迟(以毫秒为单位)。

  • android:scrollbarSize 设置垂直滚动条的宽度和水平滚动条的高度。

  • android:scrollbarStyle 控制滚动条样式和位置。

  • android:scrollbarThumbHorizontal 定义水平滚动条拇指可绘制。

  • android:scrollbarThumbVertical 定义垂直滚动条拇指可绘制。

  • android:scrollbarTrackHorizontal 定义水平滚动条轨道可绘制。

  • android:scrollbarTrackVertical 定义垂直滚动条轨道可绘制。

  • android:scrollbars 定义滚动时应显示哪些滚动条。

  • android:soundEffectsEnabled 布尔值,用于控制视图是否应为单击和触摸等事件启用声音效果。

  • android:stateListAnimator 为View设置基于状态的动画制作工具。

  • android:tag 为此视图提供包含String的标记,以便稍后检索或搜索。 View.getTag()View.findViewWithTag()

  • android:textAlignment 定义文本的对齐方式。

  • android:textDirection 定义文本的方向。

  • android:theme 指定视图的主题覆盖。

  • android:tooltipText 定义在悬停或长按时在小弹出窗口中显示的文本。

  • android:transformPivotX x枢轴点的位置,视图将围绕该位置旋转和缩放。

  • android:transformPivotY y枢轴点的位置,视图将围绕该位置旋转和缩放。

  • android:transitionName 将视图命名为可以为Transitions标识它。

  • android:translationX x轴变化。

  • android:translationY y轴变化

  • android:translationZ 在视图的z轴变化

  • android:visibility 控制视图的初始可见性。

2. ViewGroup

ViewGroup是一个特殊视图,可以包含其他视图(称为子视图)。视图组是布局和视图容器的基类。该类还定义了 ViewGroup.LayoutParams作为布局参数的基类的类。
ViewGroup是所有容器类控件的超类,也就是说所有容器类控件都有 ViewGroup的属性

ViewGroup 属性

  • addStatesFromChildren
    设置此ViewGroup的可绘制状态是否还包括其子项的可绘制状态。例如,这用于在其子EditText或按钮被聚焦时使组看起来聚焦。

    可以是布尔值,例如“ true”或“ false”。

  • animateLayoutChanges
    定义布局更改(由添加和删除项引起)是否应导致LayoutTransition运行。当此标志设置为true时,将在ViewGroup容器上设置默认的LayoutTransition对象,并在发生这些布局更改时运行默认动画。

    可以是布尔值,例如“ true”或“ false”。

  • animationCache
    定义布局动画是否应为其子项创建绘图缓存。启用动画缓存会占用更多内存,并且需要更长的初始化但提供更好的性能。默认情况下启用动画缓存。

    可以是布尔值,例如“ true”或“ false”。

  • clipToPadding
    如果填充不为零,则定义ViewGroup是否剪切其子节点并将任何EdgeEffect调整大小(但不剪切)到其填充。默认情况下,此属性设置为true。

    可以是布尔值,例如“ true”或“ false”。

  • descendantFocusability
    在查找要获得焦点的视图时,定义ViewGroup及其后代之间的关系。

      必须是以下常量值之一
    
      afterDescendants    1   只有在没有后代想要它的情况下,ViewGroup才会获得焦点。
      beforeDescendants   0   ViewGroup将在其任何后代之前获得焦点。
      blocksDescendants   2   ViewGroup将阻止其后代获得焦点。
    
  • layoutAnimation
    定义在第一次布置ViewGroup时使用的布局动画。也可以在第一个布局后手动启动布局动画。

可以是对形式为“ ”的另一种资源的引用,也可以是“ ” 形式的主题属性。@[+][package:]type/name?[package:]type/name

  • layoutMode
    定义此ViewGroup的布局模式。

      必须是以下常量值之一。
    
      不变  值   描述
      clipBounds      0   布置此容器时,请使用子项的剪辑边界。
      opticalBounds       1   布置此容器时,请使用儿童的光学边界。
    
  • splitMotionEvents
    设置此ViewGroup是否应在触摸事件调度期间将MotionEvent拆分为单独的子视图。如果为false(默认值),则触摸事件将被分派到第一个指针向下的子视图,直到最后一个指针上升。如果为true,则可以将触摸事件分派给多个孩子。每个指针的MotionEvents将被分派到发生初始ACTION_DOWN事件的子视图。

    ViewGroup.LayoutParams

视图使用LayoutParams告诉他们的父母他们想要如何布局。有关[ViewGroup Layout Attributes](https://developer.android.com/reference/android/R.styleable.html#ViewGroup_Layout) 此类支持的所有子视图属性的列表,请参阅参考资料 。

基本LayoutParams类只描述视图对宽度和高度的要求。对于每个维度,它可以指定以下之一:

 

*   FILL_PARENT(在API级别8及更高级别重命名为MATCH_PARENT),这意味着视图要与其父级一样大(减去填充)
*   WRAP_CONTENT,这意味着视图要足够大以包含其内容(加上填充)
*   一个确切的数字

也就是说, LayoutParams 的属性是作用在 ViewGroup 的子控件上的,也就是在使用的时候定义在 ViewGroup 标签的子标签上,而不是写在 ViewGroup 上这点是需要注意的,应该对应父容器使用对应的属性标签

  • android:layout_height 指定视图的基本高度。
  • android:layout_width 指定视图的基本宽度。

MarginLayoutParams

  • android:layout_margin 指定此视图左侧,顶部,右侧和底部的额外空间。
  • android:layout_marginBottom 指定此视图底部的额外空间。
  • android:layout_marginEnd 指定此视图末端的额外空间。
  • android:layout_marginHorizontal 指定此视图左侧和右侧的额外空间。
  • android:layout_marginLeft 指定此视图左侧的额外空间。
  • android:layout_marginRight 指定此视图右侧的额外空间。
  • android:layout_marginStart 指定此视图起始侧的额外空间。
  • android:layout_marginTop 指定此视图顶部的额外空间。
  • android:layout_marginVertical 指定此视图顶部和底部的额外空间。
  • android:layout_height 指定视图的基本高度。
  • android:layout_width 指定视图的基本宽度。

安卓四大布局及其独有xml属性

1. LinearLayout

  • android:baselineAligned 设置为false时,阻止布局对齐其子项的基线。

  • android:baselineAlignedChildIndex 当线性布局是基线对齐的另一个布局的一部分时,它可以指定要与哪个子基线对齐(即,哪个子TextView)。

  • android:divider 可绘制用作按钮之间的垂直分隔线。

  • android:gravity 指定对象如何在其自己的边界内在X轴和Y轴上定位其内容。

  • android:measureWithLargestChild 设置为true时,所有具有体重的孩子将被视为具有最大孩子的最小体重。

  • android:orientation 布局应该是列还是行?对行使用“horizo​​ntal”,对列使用“vertical”。

  • android:weightSum 定义最大权重总和。

    LinearLayout.LayoutParams

    • android:layout_gravity 重力指定组件应如何放置在其单元组中。
    • android:layout_weight 指示LinearLayout中多少额外空间分配给与这些LayoutParams关联的视图。

2. RelativeLayout

  • android:gravity 指定对象如何在其自己的边界内在X轴和Y轴上定位其内容。

  • android:ignoreGravity 指示哪个视图不应受重力影响。

    RelativeLayout.LayoutParams

    • android:layout_above 将此视图的下边缘定位在给定锚点视图ID上方。
    • android:layout_alignBaseline 将此视图的基线定位在给定锚点视图ID的基线上。
    • android:layout_alignBottom 使此视图的下边缘与给定锚点视图ID的下边缘匹配。
    • android:layout_alignEnd 使此视图的结束边缘与给定锚点视图ID的结束边缘匹配。
    • android:layout_alignLeft 使此视图的左边缘与给定锚点视图ID的左边缘匹配。
    • android:layout_alignParentBottom 如果为true,则使此视图的下边缘与父级的下边缘匹配。
    • android:layout_alignParentEnd 如果为true,则使此视图的结束边缘与父级的结束边缘匹配。
    • android:layout_alignParentLeft 如果为true,则使此视图的左边缘与父窗口的左边缘匹配。
    • android:layout_alignParentRight 如果为true,则使此视图的右边缘与父级的右边缘匹配。
    • android:layout_alignParentStart 如果为true,则使此视图的起始边缘与父级的起始边缘匹配。
    • android:layout_alignParentTop 如果为true,则使此视图的上边缘与父级的上边缘匹配。
    • android:layout_alignRight 使此视图的右边缘与给定锚点视图ID的右边缘匹配。
    • android:layout_alignStart 使此视图的起始边缘与给定锚点视图ID的起始边缘匹配。
    • android:layout_alignTop 使此视图的上边缘与给定锚点视图ID的上边缘匹配。
    • android:layout_alignWithParentIfMissing 如果设置为true,则在无法找到layout_toLeftOf,layout_toRightOf等的锚点时,父项将用作锚点。
    • android:layout_below 将此视图的上边缘定位在给定锚点视图ID下方。
    • android:layout_centerHorizontal 如果为true,则将此子项水平居中于其父级。
    • android:layout_centerInParent 如果为true,则将此子项在其父级中水平和垂直居中。
    • android:layout_centerVertical 如果为true,则将此子项垂直居中于其父项中。
    • android:layout_toEndOf 将此视图的起始边缘定位到给定锚点视图ID的末尾。
    • android:layout_toLeftOf 将此视图的右边缘定位在给定锚点视图ID的左侧。
    • android:layout_toRightOf 将此视图的左边缘定位到给定锚点视图ID的右侧。
    • android:layout_toStartOf 将此视图的下边缘定位到给定锚点视图ID的上侧

3.FrameLayout

  • android:foregroundGravity 定义要应用于前景drawable的重力。

  • android:measureAllChildren 确定在测量时是测量所有儿童还是仅测量处于可见或不可见状态的儿童。

    FrameLayout.LayoutParams

    • android:layout_gravity

4.GridLayout

  • android:alignmentMode 设置为alignMargins时,会导致在视图的外边界之间进行对齐,如边距所定义。

  • android:columnCount 自动定位子项时要创建的最大列数。

  • android:columnOrderPreserved 设置为true时,强制列边界以与列索引相同的顺序显示。

  • android:orientation 布局期间不使用orientation属性。

  • android:rowCount 自动定位子项时要创建的最大行数。

  • android:rowOrderPreserved 设置为true时,强制行边界以与行索引相同的顺序显示。

  • android:useDefaultMargins 设置为true时,告诉GridLayout在视图的布局参数中未指定任何边距时使用默认边距。

    GridLayout.LayoutParams

    • android:layout_column 列边界,用于界定此视图占用的单元格组的左侧。
    • android:layout_columnSpan 列跨度:右边界和左边界之间的差异,用于界定此视图占用的单元格组。
    • android:layout_columnWeight 在超额空间分布期间应分配给该视图的水平空间的相对比例。
    • android:layout_gravity 重力指定组件应如何放置在其单元组中。
    • android:layout_row 行边界,用于界定此视图占用的单元格组的顶部。
    • android:layout_rowSpan 行跨度:顶部和底部边界之间的差异,用于界定此视图占用的单元格组。
    • android:layout_rowWeight 在超额空间分布期间应分配给该视图的垂直空间的相对比例。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,将自己编写的 ViewGroup 类与布局文件中的容器绑定需要进行以下步骤: 1. 创建自定义的 ViewGroup 类:首先,你需要创建一个继承自 ViewGroup 的自定义类,例如 MyViewGroup。 2. 实现构造函数和 onLayout 方法:在 MyViewGroup 类中,你需要实现构造函数和 onLayout 方法。构造函数用于初始化视图,而 onLayout 方法用于确定子视图的位置。 ```java public class MyViewGroup extends ViewGroup { public MyViewGroup(Context context) { super(context); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { // 在这里确定子视图的位置 } } ``` 3. 创建布局文件:在 res/layout 目录下创建一个 XML 布局文件,例如 my_viewgroup.xml。在该布局文件中,使用你自定义的 ViewGroup 类作为容器。 ```xml <com.example.MyViewGroup xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 添加子视图 --> </com.example.MyViewGroup> ``` 4. 在 Activity 或 Fragment 中使用:在你的 Activity 或 Fragment 中,通过 setContentView 方法将布局文件加载到界面上。 ```java setContentView(R.layout.my_viewgroup); ``` 这样,你自定义的 ViewGroup 类就与布局文件中的容器绑定了。你可以在 MyViewGroup 类的 onLayout 方法中定义子视图的位置和布局逻辑。在布局文件中,你可以像使用其他布局容器一样添加子视图。 注意:确保自定义的 ViewGroup 类的包名和类名正确,并在布局文件中使用完整的类名(包括包名)来引用它。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值