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,一经查实,立即删除!

相关文章

心脏滴血漏洞详解及利用--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.

javaScript学习笔记总结(一)

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

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

如何使用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;选中…

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

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

CSDN个人主页下如何添加微信公众号?

本人孙叫兽,前端全站程序员。微信公众号:电商程序员。 本文以CSDN孙叫兽的博客为例。 打开CSDN孙叫兽的博客主页。 谷歌浏览器下找到这个页面的源代码,鼠标右键-检查,或者F12打开调试页面。第一步找选中图标,第二步选中目标区域,第三步找到对应的前端代码复制到…

DotNetOpenAuth实践之搭建验证服务器

系列目录&#xff1a; DotNetOpenAuth实践系列&#xff08;源码在这里&#xff09; DotNetOpenAuth是OAuth2的.net版本&#xff0c;利用DotNetOpenAuth我们可以轻松的搭建OAuth2验证服务器&#xff0c;不废话&#xff0c;下面我们来一步步搭建验证服务器 本次搭建环境&#xff…

PDF如何XSS

简介 在上传点时&#xff0c;如果上传不了图片格式的文件&#xff0c;可以尝试上传html或者pdf文件来达到xss的效果。上传html就不多说了&#xff0c;下面来说说怎么让pdf弹窗。 操作步骤&#xff1a; 环境准备&#xff1a;python3 需要准备poc.py和poc.js poc.py内容 # FRO…

NOI 练手题 图像旋转翻转变换

题目&#xff1a;来源http://noi.openjudge.cn/ch0112/09/ 总时间限制: 1000ms内存限制: 65536kB描述给定m行n列的图像各像素点灰度值&#xff0c;对其依次进行一系列操作后&#xff0c;求最终图像。 其中&#xff0c;可能的操作及对应字符有如下四种&#xff1a; A&#xff1a…

CSDN Chrome插件来啦,听说可以提升开发者效率,我们先来研究一波

孙叫兽,安徽宿州人,北漂前端全栈程序员(朝着这个目标努力),如果你觉得这篇文章帮助了你,记得三连👉(转发+点赞+评论),技术交流请联系个人主页左侧导航栏。 这个插件的定位是提升程序员的开发效率的,至于哪方面?自己慢慢体会,我大致的感觉就是搜索引擎的导航网站的…

C盘全面清理教程!彻底清理所有垃圾!

预计阅读时间 10分钟 资源在文末获取哦 老懒粉应该知道&#xff0c;我们写过“宇宙最细”的系统安装/重装教程 但我们除了新机&#xff0c;通常情况下重装系统的目的是什么&#xff1f; 虽然不管电脑出现了什么样的软件方面问题&#xff0c;我们都可以通过重装系统来一劳永…

url重定向绕过方式

url重定向绕过方式 俗话说的好&#xff0c;上有政策&#xff0c;下有对策&#xff0c;url重定向的绕过姿势也越来越多样化。普通url重定向方法测试不成功&#xff0c;换个姿势&#xff0c;说不定可以再次绕过。 这里总结下成功的绕过方式。 &#xff08;1&#xff09; 使用…

【转】android:DDMS查看Threads--不错

原文网址&#xff1a;http://www.cnblogs.com/mybkn/archive/2012/05/27/2520335.html 有时候程序运行出现死锁或者信号量卡死是很纠结的问题&#xff0c;单看代码很难分析定位问题&#xff0c;这时候可以借助DDMS来查看threads的运行情况&#xff0c;一目了然。 手机连接上USB…

Fastjson反序列化漏洞复现(实战案例)

漏洞介绍 FastJson在解析json的过程中&#xff0c;支持使用autoType来实例化某一个具体的类&#xff0c;并调用该类的set/get方法来访问属性。通过查找代码中相关的方法&#xff0c;即可构造出一些恶意利用链。 通俗理解就是&#xff1a;漏洞利用fastjson autotype在处理json对…