Android的绝大部分UI组件都放在android.widget包及其子包、android,view包及其子包中,Android应用的所有UI组件都继承了View类,View组件非常类似于Swing变成的JPanel,它代表一个空白的矩形区域。

  View类还有一个重要的子类:ViewGroup,但ViewGroup通常作为其他组件的容器使用。

  Android的所有UI组件都是建立在View、ViewGroup基础之上的,Android采用了“组合器”设计模式来设计View和ViewGroup:ViewGroup是View的子类,因此ViewGroup也可被当成View使用,对于一个Android应用的图形用户界面来说,ViewGroup作为容器来生盛装其他组件,而ViewGroup里除了可以包含普通View组件之外,还可以再次包含ViewGroup组件。

  Android提供了两种方式来控制组件的行为:

    1.在XML布局文件中通过XML属性进行控制

    2.在Java或Kotlin代码中通过调用方法进行控制。

  实际上不管使用那种方式,他们控制Android用户界面行为的本质是完全一样的。大部分时候,控制UI组件的XML属性还有对应的方法。

  对于View类而言,它是所有UI组件的基类,因此它包含的XML属性和方法是所有组件都可以使用的。

XML属性 相关方法 说明
android:alpha setAlpha(float) 设置该组件的透明度
android:background setBackgroundResource(int) 设置该组件的背景颜色
android:backgroundTint setBackgroundTintList(ColorStateList)

设置对背景颜色重新着色,该属性要

与android:background结合使用

android:backgroundTintMode setBackgroundTintMode(PorterDuff.Mode)

设置对背景颜色着色的模式,该属性

支持PorterDuff.Mode的各枚举值

android:clickable setClickable(boolean) 设置该组件是否可以激发单击事件
android:contentDescription setContentDescription(CharSequence) 设置该组件的内容描述信息
android:contextClickable setContextClickable(boolean)

设置该属性是否可以激发context单

击事件

android:drawingCacheQuality setDrawingCacheQuality(int) 设置该组件所使用的绘制缓存的质量
android:elevation setElevation(float)

设置该组件“浮”起来的高度,通过

设置该属性可让该组件呈现3D效果

android:fadeScrollbars setScrollbarFadingEnabled(boolean)

设置当不使用该组件的滚动条时,是否

淡出显示滚动条

android:fadingEdgeLength getVerticalFadingEdgeLength() 设置淡出边界的长度
android:filterTouchesWhenObscured setFilterTouchesWhenObscured(boolean)

设置当该组件所在的窗口被其他窗口

遮挡时,是否过滤触摸事件

android:fitsSystemWindows setFitsSystemWindows(boolean)

设置是否基于系统窗口(如状态栏)

来调整视图布局

android:focusable setFocusable(boolean) 设置该组件是否可以得到焦点
android:focueableInTouchMode setFocusableInTouchMode(boolean)

设置该组件在触摸模式下是否可以得到

焦点

android:foreground setForeground(Drawable) 设置绘制到组件内容上面的Drawable 
android:foregroundGravity setForegroundGravity(int) 设置绘制前景Drawable时的对齐方式
android:foregroundTint setForegroundTintList(ColorStateList) 设置对前景Drawable重新着色
android:foregroundTintMode setForegroundTintMode(PorterDuff.Mode) 设置对前景Drawable着色的模式
android:hapticFeedbackEnabled setHapticFeedbackEnabled(boolean)

设置该组件是否能对诸如长按这样的事件

启用触觉反馈

android:id setId(int)

设置该组件的唯一标识。在Java代码中

可通过findViewById来获取它

android:isScrollContainer setScrollContainer(boolean) 设置该组件是否作为可滚动容器使用 
android:keepScreenOn setKeepScreenOn(boolean) 设置该组件是否会强制手机屏幕一直打开 
android:layerType setLayerType(int,Paint)  设置该组件使用的图层类型 
android:layoutDirection setLayoutDirection(int) 

设置该组件的布局方式。该属性支持

ltr(从左到右)、rtl(从右到左)、inherit

(与父容器相同)和locale四种值

android:longClickable setLongClickable(boolean)  设置该组件是否可以响应长单击事件 
android:minHeight setMinimumHeight(int)  设置该组件的最小高度 
android:minWidth setMinimumWidth(int)  设置该组件的最小宽度 
android:nextFocusDown setNextFocusDownId(int) 

设置焦点在该组件上,且单击向下键时获得

焦点的组件ID

android:nextFocusForward setNextFocusForwardId(int) 

设置焦点在该组件上,且单击向前键时获得

焦点的组件ID

android:nextFocusLeft setNextFocusLeftId(int)

设置焦点在该组件上,且单击向左键时获得

焦点的组件ID

android:nextFocusRight setNextFocusRightId(int)

设置焦点在该组件上,且单击向右键时获得

焦点的组件ID

android:nextFocusUp setNextFocusUpId(int)

设置焦点在该组件上,且单击向上键时获得

焦点的组件ID

android:onClick  

为该组件的单击事件绑定监听器

android:padding setPadding(int,int,int,int) 在组件的四边设置填充区域
android:paddingBottom setPadding(int,int,int,int) 在组件的下边设置填充区域
android:paddingEnd setPaddingRelative(int,int,int,int)  相对布局时,在组件结尾处设置填充区域 
android:paddingHorizontal setPaddingRelative(int,int,int,int)  在组件的左、右两边设置填充区域 
android:paddingLeft setPadding(int,int,int,int) 在组件的左边设置填充区域 
android:paddingRight setPadding(int,int,int,int)  在组件的右边设置填充区域 
android:paddingStart setPaddingRelative(int,int,int,int)  相对布局时,在组件起始处设置填充区域 
android:paddingTop setPadding(int,int,int,int)  在组件的上边设置填充区域 
android:paddingVertical setPadding(int,int,int,int)  在组件的上、下两边设置填充区域 
android:rotation setRotation(float) 设置该组件的旋转的角度 
android:rotationX setRotationX(float)  设置该组件绕X轴旋转的角度 
android:rotationY setRotationY(float)  设置该组件绕Y轴旋转的角度 
android:saveEnabled setSaveEnabled(boolean)

如果设置为false,那么当该组件被冻结时

不会保存它的状态

android:scaleX setScaleX(float) 设置该组件在水平方向的缩放比
android:scaleY setScaleY(float)  设置该组件在垂直方向的缩放比 
android:scrollIndicators setScrollIndicators(int) 

设置组件滚动时显示哪些滚动条,默认值

是“top|bottom”,即上、下显示

android:scrollX   该组件初始化后的水平滚动偏移 
android:scrollY   该组件初始化后的垂直滚动偏移 
android:scrollbarAlwaysDrawHorizontalTrack  

设置该组件是否总是显示水平滚动条的

轨道

android:scrollbarAlwaysDrawVerticalTrack  

设置该组件是否总是显示垂直滚动条的

轨道

android:scrollbarDefaultDelayBeforeFade setScrollBarDefaultDelayBeforeFade(int)  设置滚动条在淡出隐藏之前延迟多少毫秒
android:scrollbarSize setScrollBarSize(int) 

设置垂直滚动条的宽度和水平滚动条的高度

android:scrollbarStyle setScrollBarStyle(int) 

设置滚动条的风格和位置。该属性支持如下

属性值:

  1.insideOverlay

  2.insideInset

  3.outsideOverlay

  4.outsideInset

android:scrollbarThumbHorizontal  

设置该组件的水平滚动条的滑块对应的

Drawable对象

android:scrollbarThumbVertical  

设置该组件的垂直滚动条的滑块对应的

Drawable对象

android:scrollbarTrackHorizontal  

设置该组件的水平滚动条的轨道对应的

Drawable对象

android:scrollbarTrackVertical  

设置该组件的垂直滚动条的轨道对应的

Drawable对象

android:scrollbars  

定义该组件滚动时显示几个滚动条。

该属性支持如下属性值:

  1.none:不显示滚动条

  2.horizontal:显示水平滚动条

  3.vertical:显示垂直滚动条

android:soundEffectsEnabled setSoundEffectsEnabled(boolean)  设置该组件被单击时是否使用音效
android:tag  

为该组件设置一个字符串类型的tag值。

接下来可通过View的getTag()获取该

字符串,或通过findViewWithTag()

查找该组件

android:textAlignment setTextAlignment(int)  设置组件内文字的对齐方式
android:textDirection setTextDirection(int)  设置组件内文字的排列方式 
android:theme   设置该组件的主题 
android:transformPivotX setPivotX(float)  设置该组件旋转时旋转中心的X坐标 
android:transformPivotY setPivotY(float)  设置该组件旋转时旋转中心的Y坐标 
android:transitionName  

为该View指定名字以便Transition能够

识别它

android:translationX setTranslationX(float) 设置该组件在X方向上的位移 
android:translationY setTranslationY(float)  设置该组件在Y方向上的位移
android:translationZ setTranslationZ(float)  设置该组件在Z方向(垂直屏幕方向)上的位移 
android:visibility setVisibility(int) 设置该组件是否可见 

**Drawable是Android提供的一个抽象基类,它代表了“可以被绘制出来的某种东西”,Drawable包括了大量子类,比如ColorDrawable代表颜色Drawable,ShapeDrawable代表几何形状Drawable。各种Drawable可用于定制UI组件的背景等外观。

**上面表格中介绍View组件时列出的setBackgroundTintList、setElevation(float)、setTranslationZ(float)方法都是Material Design中的功能,他们的作用也基本相似。它们都可用于设置该组件垂直屏幕“浮”起来的效果,通过该属性可让该组件呈现3D效果。当该组件垂直于屏幕“浮”起来之后,组件下的实时阴影就会自动呈现。

  ViewGroup继承了View类,当然也可以当成普通View来使用,但ViewGroup主要还是当成容器类使用。但由于ViewGroup是一个抽象类,因此在实际使用中通常总是使用ViewGroup的子类来作为容器,例如各种布局管理器。

  ViewGroup容器控制其子组件的分布依赖于ViewGroup.LayoutParams、ViewGroup.MarginLayoutParams两个内部类。这两个内部类中都提供了一些XML属性,ViewGroup容器中的子组件可以指定这些XML属性

XML属性 说明
android:layout_height 指定该子组件的布局高度
android:layout_width 指定该子组件的布局宽度

  android:layout_height和android:layout_width两个属性支持如下两个属性值

    1.match_parent(早期叫fill_parent):指定子组件的高度、宽度与父容器组件的高度、宽度相同(实际上还要减去填充的空白距离)

    2.wrap_content:指定子组件的大小恰好能包裹它的内容即可。

**Android的布局机制中,Android组件的大小不仅受它实际的宽度、高度控制,还受它的布局高度与布局宽度控制。例如一个组件的宽度为30pt,如果将它的布局宽度设置为match_parent,那么该组件的宽度将会被“拉宽”到占满它所在的父容器;如果将它的布局宽度设置为wrap_content,那么该组件的宽度才会是30pt。

  ViewGroup.MarginLayoutParams用于控制子组件周围的页边距(Margin,也就是组件四周的留白),它支持的XML属性及相关方法如下表所示:

XML属性 相关方法 说明
android:layout_margin setMargins(int,int,int,int) 指定该子组件四周的页边距
android:layout_marginBottom setMargins(int,int,int,int) 指定该子组件下边的页边距
android:layout_marginEnd setMargins(int,int,int,int) 指定该子组件结尾处的页边距
android:layout_marginHorizontal setMargins(int,int,int,int) 指定该子组件左、右两边的页边距
android:layout_marginLeft setMargins(int,int,int,int) 指定该子组件左边的页边距
android:layout_marginRight setMargins(int,int,int,int) 指定该子组件右边的页边距
android:layout_marginStart setMargins(int,int,int,int) 指定该子组件起始处的页边距
android:layout_marginTop setMargins(int,int,int,int) 指定该子组件上边的页边距
android:layout_marginVertical setMargins(int,int,int,int) 指定该子组件上、下两边的页边距

Android的视图(View)组件的更多相关文章

  1. 关于Android界面编程与视图(View)组件

    UI组件--------------->android.widget.* View组件------------->android.view.* 视图(View)组件 所有UI组件都是建立在 ...

  2. 界面编程与视图(View)组件

    1.视图组件与容器组件 Android应用绝大部分UI组件都放在Android.widget包及其子包.android.view包及其子包中,其所有UI组件都继承了view类,view组件代表一个空白 ...

  3. Android列表视图(List View)

    Android列表视图(ListView) ListView是一个显示滚动项列表的示视图组(viewgroup),通过使用适配器(Adapter)把这些列表项自动插入到列表中.适配器比如从一个数组或是 ...

  4. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  5. Android零基础入门第54节:视图切换组件ViewSwitcher

    原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ...

  6. Android Studio开发基础之自定义View组件

    一般情况下,不直接使用View和ViewGroup类,而是使用使用其子类.例如要显示一张图片可以用View类的子类ImageView,开发自定义View组件可分为两个主要步骤: 一.创建一个继承自an ...

  7. Android编程动态创建视图View的方法

    在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layout ...

  8. android之View组件的XML属性集合

    XML属性 相关方法 说明 android:alpha setAlpha(float) 设置该组件的透明度 android:background setBackgroundResource(int) ...

  9. [Android] Android 注解绑定UI View组件库 ButterKnife 的使用

    ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤.是大神JakeW ...

随机推荐

  1. 下载eclipse 配置eclipse 新建Java项目 写一个小程序 运行

    为了更好的学习java,我打算下载个eclipse 地址:https://www.eclipse.org/downloads/packages/ 我们需要下载的版本是Eclipse IDE for J ...

  2. 如何自己实现一个HTMLRunner

    在使用unittest框架时,我们常常需要下载一个HTMLRunnerCN.py用来生成HTML格式的报告,那么我们能不能自己实现一个呢? HTMLRunner是模仿unittest自带的TextTe ...

  3. Codeforces 955C Sad powers(数论)

    Codeforces 955C Sad powers 题意 q组询问,每次询问给定L,R,求[L,R]区间内有多少个数可以写成ap的形式,其中a>0,p>1,1 ≤ L ≤ R ≤ 1e1 ...

  4. selenium的方法

    # Licensed to the Software Freedom Conservancy (SFC) under one # or more contributor license agreeme ...

  5. IDEA个人常用配置记录

    原文 一.常用快捷键 编辑 ⇧ + ↩:开始新的一行 ⌘ + ⇧ + ↩:行内任意位置进行换行,并自动补齐“;”.“{}” ⌘ + ⇧ + U:大小写切换 ⌥ + ⌦:删除到单词的末尾(⌦键为Fn+D ...

  6. swoole入门简介

    原文:https://www.cnblogs.com/dormscript/p/4811921.html 本文主要记录一下学习swoole的过程.填过的坑以及swoole究竟有多么强大! 首先说一下对 ...

  7. P2602 [ZJOI2010]数字计数&P1239 计数器&P4999 烦人的数学作业

    P2602 [ZJOI2010]数字计数 题解 DFS 恶心的数位DP 对于这道题,我们可以一个数字一个数字的求 也就是分别统计区间 [ L , R ] 内部数字 i 出现的次数 (0<=i&l ...

  8. 修改vscode终端样式

    在设置中查找workbench,然后编辑setting.json: "terminal.integrated.cursorBlinking": true, "termin ...

  9. C++ STL——C++容器的共性和相关概念

    目录 一 STL容器共性机制 二 STL容器的使用场合 三 函数对象 四 谓词 五 内建函数对象 六 函数对象适配器 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一 ...

  10. 加载自定义目录下的springmvc.xml配置文件

    在默认情况下:springmvc框架的配置文件必须叫<servlet-name>-servlet.xml 且必须放在/WEB-INF/目录下,我们可以在web.xml文件中,为Dispat ...