android应用的界面编程----View与ViewGroup的概念

1 UI OverView

  Android中所有的UI元素都是通过View与ViewGroup来构建的,View是指屏幕中一块可与用户进行交互的空白,类似于java界面编程中的JPanel。为了界面布局,A Group对象可以包含多个View或ViewGroup(由于ViewGroup是View的子类)。

  View的子类集合主要包括各种Input 控件,ViewGroup的子类集合包括各种布局控件。

2 user Interface layout

  每个应用程序的界面UI控件都是由如下图中的层次关系构成。每个ViewGroup都是成员View(input 控件或者UI上定义的小部件)的不可见容器。层次结构根据需要可复杂可简单(越简单性能越好)。

  用户界面构建有两种方法:java代码构建(跟java界面编程相似);借助xml进行界面布局。对于View类而言,它是所有UI控件的基类,所以View所包含的xml属性和方法是所有组件都可以使用的。如下是一个layout文件示例:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="fill_parent"android:orientation="vertical" ><TextView android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am a TextView" /><Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am a Button" />
</LinearLayout>
View Code

  当你的App加载上述的布局资源的时候,Android会将布局中的每个节点进行实例化成一个个对象,然后你可以为这些定义一些额外的行为,查询对象的状态,或者修改布局。 

3 view类的xml属性及其说明

XML属性说明
android:alpha设置该组件的透明度
android:background设置该组件的背景颜色
android:clickable设置该组件是否可以激发单击事件
android:contentDescription设置该组件的主要描述信息
android:drawingCasheQuanlity设置该组件所使用的绘制缓存质量
android:fadeScrollbars设置该组件不使用滚动条时,是否淡出显示滚动条
android:fadingEdge设置滚动该组件时边界是否使用淡出效果
android:fadingEdgeLength设置淡出边界长度
android:focusable设置该组件是否可以得到焦点
android:focusableInTouchMode设置该组件在触摸模式下是否可以得到焦点
android:id设置该组件ViewById来获取它
android:isScrollContainer设置该组件是否可以作为可滚动容器使用
android:keepScreenOn设置该组件是否会强制手机屏幕一直打开
android:longClickable设置该组件是否可以响应长单击事件
android:minHeight设置该组件的最小高度
android:minWidth设置该组件的最小宽度
android:nextFocusDown设置焦点在该组件上,且按向下键时获得焦点的组件id
android:nextFocusRight设置焦点在该组件上,且按向右键时获得焦点的组件id
android:nextFocusLeft设置焦点在该组件上,且按向左键时获得焦点的组件id
android:nextFocusUp设置焦点在该组件上,且按向上键时获得焦点的组件id
android:onClick为该组件的单击事件绑定监听器
android:padding在组件的四边设置填充区域
android:paddingLeft在组件的左边设置填充区域
android:paddingRight在组件的右边设置填充区域
android:paddingBottom在组件的底边设置填充区域
android:paddingTop在组件的顶边设置填充区域
android:rotation设置该组件的旋转角度
android:rotationX设置该组件绕X轴旋转的角度
android:rotationY设置该组件绕Y轴旋转的角度
android:saveEnabled设置为false,当该组件被冻结时不会保存其状态
android:scaleX设置该组件水平方向的缩放比
android:scaleY设置该组件垂直方向的缩放比
android:scrollX设置该组件初始化后的水平滚动条偏移
android:scrollY设置该组件初始化后垂直滚动条偏移

android:scrollbarAlwaysDrawHorizontalTrack

设置该组件是否显示水平滚动条的轨迹
android:scrollbarAlwaysDrawVerticalTrack设置该组件是否显示垂直滚动条的轨迹
android:scrollbarDefaultDelayBeforeFade设置滚动条在淡出隐藏之前延迟多少毫秒
android:scrollbarFadeDuration设置滚动条淡出隐藏需要多少秒
android:scrollbarSize设置垂直滚动条的宽度和水平滚动条的高度
android:scrollbarStyle设置滚动条的风格和位置:insideOverlay
android:scrollThumbHorizontal设置该组件水平滚动滑块对对应的Drawable对象
android:scrollThumbVertical设置该组件垂直滚动滑块对对应的Drawable对象
android:scrollTrackbHorizontal设置该组件水平滚动轨道对对应的Drawable对象
android:scrollTrackbVertical设置该组件垂直滚动轨道对对应的Drawable对象
android:scrollbar设置该组件滚动时显示几个滚动条:none horizontal,vertical
android:soundEffectsEnabled设置该组件被单击时是否使用音效
android:tag为组件设置一个字符串tag值,可以通过view的getTag 获取字符串,或通过findViewByTag查找该组件

android:transformPivotX

设置该组件旋转时旋转中心的X坐标
android:transformPivotY设置该组件旋转时旋转中心的Y坐标
android:translationX设置该组件在x方向上的位移
android:translationY设置该组件在Y方向上的位移
android:visibility设置该组件是否可见

 4 ViewGroup类

  ViewGroup继承了View类,故其可以当作普通的View来使用;但ViewGroup是一个抽象类,实际都是使用ViewGroup的子类作为容器类。ViewGroup容器控制容器内组件的分布依赖于ViewGroup.LayoutParams与ViewGroup.MarginLayoutParams两个内部类。这两个内部类也提供了一些XML属性,ViewGroup容器内子组件可以指定这些xml属性。

4.1 ViewGroup.LayoutParams所支持的两个xml属性

xml属性说明
android:layout_height指定该子组件的布局高度fill_parent/match_parent/wrap_parent
android:layout_width指定该子组件的布局宽度fill_parent/match_parent/wrap_parent

4.2 ViewGroup.MarginLayoutParams:控制子组件周围的页边距

xml属性说明
android:layout_marginBottom指定该子组件下边的页边距
android:layout_marginLeft指定该子组件左边的页边距
android:layout_marginRight指定该子组件右边的页边距
android:layout_marginTop指定该子组件上边的页边距

 

 

 

 

 

3 线性布局管理器LinearLayout

  线性布局由LinearLayout类代表,将容器里的组件一个挨一个地排列起来,LinearLayout不会自动换行,到末尾后剩余的组件将不会被显示出来。LinearLayout支持的常用xml属性及其说明。

xml属性说明
android:baselineAligned该属性为false,将会阻止布局管理器与它的子元素基线对其
android:divider设置垂直布局时,两个按钮之间的分隔条
android:gravity设置布局管理器内组件的对齐方式。该属性支持top/button/left/right/center_vertical/fill_vertical...
android:measureWithLargestChild当属性设置为true时,所有带权重的子元素都会具有最大元素的最小尺寸
android:orientation设置布局管理器内组件的排列方式vertical/horizontal默认值

3.1 LinearLayout.LayoutParams控制

xml属性说明
android:layout_gravity指定该布局管理器内子组件布局方式
android:layout_weight指定该子元素在linearLayout中所占的权重

转载于:https://www.cnblogs.com/penghuster/p/4878703.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比较散列策略

总览 编年史有许多用于哈希的实现&#xff0c;包括City和Murmur。 它也有自己的香草哈希&#xff0c;但是如何进行测试&#xff1f; 什么是香草哈希&#xff1f; Vanilla Hash设计得尽可能简单&#xff0c;并且针对Orthogonal Bits测试进行了优化&#xff08;请参见下文&#…

心脏滴血漏洞详解及利用--HeartBleed With OpenSSL

【事件规则】 OpenSSL“心脏出血”漏洞是一个非常严重的问题。这个漏洞使攻击者能够从内存中读取多达64 KB的数据。也就是说&#xff0c;只要有这个漏洞的存在&#xff0c;在无需任何特权信息或身份验证的环境下&#xff0c;我们就可以从我们自己的&#xff08;测试机上&#…

npm ERR! the command again as root/Administrator

以管理员身份运行。 顺便测试一下git bash和cmd安装nmp intall,测试他们之间的关系&#xff0c;发现git bash应该比cmd命令更丰富一点&#xff0c;推荐使用git bash.

Nmap常用命令

1、扫描单个目标地址&#xff1a; Nmap 192.168.128.30 2、扫描多个目标地&#xff1a; Nmap 192.168.128.130 192.168.128.129 3、扫描一个范围内的目标地址&#xff1a; Nmap 192.168.128.129-130 4、扫描目标地址所在的某个网段 Nmap 192.168.128.130/24 5、扫描主机列表1.t…

解决tableViewCell分割线不到左边界的问题

12345678910111213141516171819202122232425262728在tableView控制器的.m文件中任何位置加入以下两个方法即可解决/*** 下面两个方法解决cell分割线不到左边界的问题*/-(void)viewDidLayoutSubviews {if ([self.tableView respondsToSelector:selector(setSeparatorInset:)]) …

javaScript学习笔记总结(一)

javaScript教程 JavaScript 是 Web 的编程语言。 所有现代的 HTML 页面都使用 JavaScript。 JavaScript 一直在升级,所以我们需要时刻了解 JavaScript 的新技术。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>…

vaadin_Vaadin应用程序中的EJB查找

vaadin自从我实现上一个服务定位器以来已经有很长时间了。 考虑到Java EE CDI &#xff08;上下文和依赖注入&#xff09;的成熟度&#xff0c;我认为不再需要。 我的第一个实现是在基于Struts的Web应用程序中使用EJB。 之后&#xff0c;我开始使用JSF&#xff0c;它只需要带有…

host碰撞漏洞

一、host碰撞原理环境搭建 在虚拟机下搭建Nginx环境配置&#xff08;192.168.202.128&#xff09; 1. 设置一个server为ip访问时返回400 2. 设置一个sever为访问某个域名时

servlet中访问mysql无法包含中文的解决

最近写servlet应用发现&#xff0c;如果我的sql语句中包含英文&#xff0c;访问数据库就失败&#xff0c;而我数据库的编码是utf8 -- UTF-8 Unicode&#xff0c;而我servlet的字符也已经转为UTF-8 &#xff0c;还是不行。 后来多方打听&#xff0c;终于解决了这个问题&#xff…

uniapp框架之如何修改接口传参的参数

大家好&#xff0c;我是孙叫兽&#xff0c;uniapp技术交流群&#xff1a;1149933135 项目采用uniappuView开发&#xff1b; uiapp官方文档&#xff1a;https://uniapp.dcloud.io/ uview官方文档&#xff1a;http://uviewui.com/components/intro.html 谷歌浏览器扩展插件Header…

在Java 8中进行投射(还有其他功能?)

将实例转换为设计不良的类型。 尽管如此&#xff0c;在某些情况下没有其他选择。 从第一天开始&#xff0c;这种能力就已经成为Java的一部分。 我认为Java 8提出了对这种古老技术稍加改进的需求。 静态铸造 用Java进行转换的最常见方法如下&#xff1a; 静态铸造 Object ob…

windows查看文件的md5值

1、winr 输入cmd进入控制界面 2、certutil -hashfile XXXX md5(XXXX为绝对路径) Linux下查看文件md5值&#xff1a; 进入文件目录&#xff0c;使用md5sum加文件名&#xff0c;例如md5sum test.txt

mysql字符串分割函数(行转列)

由于工作需要需要处理一些以逗号分隔的字符串&#xff0c;每次都要现做很是麻烦&#xff0c;网上找了很多都没有现成的&#xff0c;好吧&#xff0c;自己动手写一个好了 1 CREATE DEFINER harri% FUNCTION str_for_substr(num int, str varchar(5000))2 RETURNS varchar(100)…

如何使用window.btoa base64对接口数组进行加密处理

大家好&#xff0c;我是孙叫兽&#xff0c;前端全栈工程师&#xff0c;uniapp技术交流群&#xff1a;1149933135 项目采用uniappuView开发&#xff1b; uiapp官方文档&#xff1a;https://uniapp.dcloud.io/ uview官方文档&#xff1a;http://uviewui.com/components/intro.htm…

值得收藏的40个黑客常用入侵端口总结

值得收藏的40个黑客常用入侵端口总结-安全-PHP中文网 常用端口&#xff1a; 21端口渗透剖析 FTP通常用作对远程服务器进行管理&#xff0c;典型应用就是对web系统进行管理。一旦FTP密码泄露就直接威胁web系统安全&#xff0c;甚至黑客通过提权可以直接控制服务器。这里剖析渗透…

csdn个人主页下如何添加微信公众号及超链接

本文以CSDN孙叫兽的博客为例。打开CSDN孙叫兽的博客主页。谷歌浏览器下找到这个页面的源代码&#xff0c;鼠标右键-检查&#xff0c;或者F12打开调试页面。第一步找选中图标&#xff0c;第二步选中目标区域&#xff0c;第三步找到对应的前端代码复制到本地文件&#xff08;选中…

2015-10-15 css3

图片模糊效果 <img id "img1" src"image/免费学PS.jpg" style"-webkit-filter: blur(5px)"> //webkit解决兼容问题一&#xff1a;特殊选择器 1. *可以匹配任何标记 2. >表示后面是前面的子元素 #d1 span //表示id为d1的div下面的…

proxy aspectj_使用AspectJ,Javassist和Java Proxy进行代码注入的实用介绍

proxy aspectj静态地或在运行时将代码片段注入已编译的类和方法中的功能可能会很有帮助。 这尤其适用于在没有源代码的第三方库中或在无法使用调试器或探查器的环境中对问题进行故障排除。 代码注入对于处理涉及整个应用程序的问题&#xff08;例如性能监视&#xff09;也很有用…

gshark(github敏感信息搜集工具)

gshark 介绍&#xff1a;这是个可视化的监测工具&#xff0c;它不仅可以监控github&#xff0c;还可以监控gitlab‍ 所需环境&#xff1a; go64位gccLinux 一个github账号token&#xff0c;获取地址&#xff1a;https://github.com/settings/tokens 不建议使用window部署&a…