[Android Studio]掌握Android Studio的五种常见控件和五种常见布局
目录
- 一、View和ViewGroup
- 二、Android的五种常见控件
- 2.1 文本控件
- 2.1.1 TextView
- 2.1.2 EditText
- 2.2 按钮控件
- 2.2.1 Button
- 2.2.2 RadioButton
- 2.2.3 CheckBox
- 2.3 图片控件
- 2.3.1 ImageView
- 2.4 列表控件
- 2.4.1 ListView
- 2.4.2 Spinner
- 2.4.3 ExpandableListView
- 2.5 时间日期控件
- 2.5.1 AnalogClock(模拟时钟的显示方式)和DigitalClock
- 2.5.2 DatePicker和TimePiker
- 三、五种常用的布局
- 3.1 线性布局(LinearLayout)
- 3.2 相对布局(RelativelLayout)
- 3.3 帧布局(FrameLayout)
- 3.4 表格布局(TableLayout)
- 3.5 绝对布局(AbsoluteLayout)
- 四、参考资料
一、View和ViewGroup
Android体系中UI的设计采用视图层次的结构。
视图层次: 由View和ViewGroup组成。在创建UI时,开发人员不会真正去创建View或者ViewGroup,而是直接使用Android所提供的具有不同功能的控件,因此通常是看不到View或ViewGroup。
View是Android系统中最基本的组件,同时也是Android所有可视组件的父类,它完成了构建按钮、文本框、时钟等诸多控件的基本功能。此外View还有一个非常重要的子类ViewGroup。
View与ViewGroup的区别:ViewGroup能够容纳多个View作为ViewGroup的子组件,同时View也可以包含ViewGroup作为其子组件,所以View和ViewGroup是相互包容、“你中有我,我中有你”的关系。
wrap_content: 是layout_width和layout_height的属性值之一,表示和自身内容一样的长度。(由内容决定)
match_parent: 是layout_width和layout_height的属性值之一,表示和父组件一样的长度。
fill_parent: 以填充布局单元内尽可能多的空间。
margin属性: 外边距,指当前视图与其他视图间的距离,可以一次性指定上下左右四个外边距值,也可以一次性指定上下左右采用同一个边距值。
android:layout_margin="10dp"android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
padding属性: 内边距,指当前视图边距与其内容间的距离。赋值跟margin属性同类型。
android:layout_padding="10dp"android:layout_paddingTop="10dp"
android:layout_paddingBottom="10dp"
android:layout_paddingLeft="10dp"
android:layout_paddingRight="10dp"
visible属性:
android:visiblity="visible"
android:visiblity="invisible"
android:visiblity="gone"
二、Android的五种常见控件
2.1 文本控件
在Android的体系结构中,TextView和EditView之间是父类和子类的关系。即EditText继承于TextView,因此EditText几乎具备TextView的所有功能,两者之间最大的不同在于:EditText能够支持用户输入,而TextView不能。
2.1.1 TextView
TextView是用于显示文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能。
注意:
颜色值组成(三原色)有三种表示方法1.#RGB:3位16进制整数,如:#f00
2.#RRGGBB:#00ff00
3.#AARRGGBB:#ff0000ff
2.1.2 EditText
EditText是可以进行编辑操作(用于用户输入和编辑文字或字符的控件)的文本框,将用户信息传递给Android程序。还可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。
2.2 按钮控件
2.2.1 Button
Android的体系结构中Button继承于TextView,而ImageButton继承于ImageView。虽然这两个控件继承于不同的控件,但是Button和ImageButton都是用于完成用户的单击按钮时的onClick事件。
Button是按钮,是用于响应用户的一系列点击事件,使程序更加流畅和完整。
点击事件(监听事件)实现方式(三种):
☞ 实现方式一:
先在layout文件中指定onClick属性:Android:onClick=“click”。然后在Activity中实现这个click方法
public void click (View v){/// 处理按钮监听事件
}
☞ 实现方式二:在Activity中添加匿名内部类
Button button = findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener(){@Overridepublic void OnClick(View v){/// 处理按钮监听事件Log.i("匿名内部类方式","button is clicked"); }
});
☞ 实现方式三:
public class MainActivity implements View.OnClickListener
{//实现接口抽象方法public void onClick(View v){//处理按钮监听事件}
}//在Activity中注册回调接口
button.setOnClickListener(this);
2.2.2 RadioButton
RadioButton为单选按钮,它需要与RadioGroup配合使用,提供两个或多个互斥的选项集。(如男、女)
RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。
RadioButton按钮的实现步骤:
1.先在UI布局文件activity——main.xml中的LinearLayout标签中添加如下代码:
<RadioGroupandroid:id="@+id/radiogroup"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtonandroid:id="@+id/radiobutton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="Male"/><RadioButtonandroid:id="@+id/radiobutton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Female"/></RadioGroup>
然后在MainActivity.java中添加onCreate函数中添加以下代码:
RadioGroup radiogroup = (RadioGroup)findViewById(R.id.radiogroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener(){public void onCheckedChanged(RadioGroup group,int checkedId){switch(checkedId){case R,id.maleradio:editText.setText("男");break;}case R,id.femaleradio:editText.setText("女");break;}}
}///另外Switch也可以用以下方法表示
if(checked==R.id.radiobutton1){textView.setText("男");
}
else{case R,id.maleradio:editText.setText("女");break;}
}
2.2.3 CheckBox
CheckBox即多选按钮,允许用户在一组选项中进行单选和多选。用法与RadioButton类似。
CheckBox按钮的实现步骤:
1.先在UI布局文件activity——main.xml中的LinearLayout标签中添加代码(与radioBox的相似)
2.
注意:响应事件从何而来?(两个来源)
1.由系统提供的,具有特定函数名的响应函数(在OnCreate中进行定义和实现)
2.自定义响应函数名的方法来响应用户事件(放在Activity中作为一个成员函数来使用)
public void CheckboxClicked(View view){boolean checked = ((Checked)view).isChecked();case R.id.meat:if(checked){editText.setText("肉类");}else{...}break;...
}
2.3 图片控件
2.3.1 ImageView
ImageView是视图控件,它继承于View,其功能是在屏幕中显示图像,ImageView类可以从各种来源加载图像(如资源库或网络),并提供缩放、裁剪、着色(渲染)等功能。
///在UI布局文件activity——main.xml中添加<ImageView
android:id="@id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:srcCompat="@tolls:sample/backgrounds/scenic[0]"///在MainActivity.java中添加onCreate函数中定义ImageView对象
ImageView imageView;
imageView.setImageResource(R.drawable.ic_launcher_foreground);
2.4 列表控件
2.4.1 ListView
普通列表–ListView在程序中使用频率相对比较高,很多地方都会用到这个控件,其中的内容会以一个列表的形式显示出来,但是在使用ListView时需要一个适配器(应用自带适配器、z自定义适配器)(Adapter)类显示需要的内容。当显示的内容复杂的时候系统的适配器不能满足要求了,这时可以自定义适配器,写一个类继承BaseAdapter。
2.4.2 Spinner
下拉列表–Spinner 控件也是一种列表类型的控件,可以极大地提高用户的体验性。当需要用户选择时,可以提供一个下拉列表将所有可选的项列出来,供用户选择。
2.4.3 ExpandableListView
多级列表ExpandableListView控件提供的是一个多级列表(一般是两级)。
如何实现这个两级列表呢?既然ExpandableListView采用列表的形式,它也是应该有一个适配器,但是它的适配器不是继承BaseAdapter,而是继承它独有的适配器BaseExpandableListView,同时也需要实现其中的几个方法:
BaseExpandableListView中的方法:
方法名称 | 参数 | 说明 |
---|---|---|
getGroudId | int groundPosition | 获取在给定的位置编号 |
getChildId | int groundPosition,int childPosition | 获取给定组的孩子的ID |
getGroudCount | 获取第一级列表的列数 | |
getChildrenCount | int groupPosition | 获取指定组中孩子的数量 |
getGroup | int groupPosition | 获取定组相关的数据 |
getGroupView | int groupPositin,boolean isExpanded,View convertView,ViewGroup parent | 获取一个显示的视图给定组 |
getChild | int groupPosition,int childPosition | 获取与孩子在给定的组相关的数据 |
getChildView | int groupPosition,boolean isLastChild,View convertView,ViewGroup parent | 获取一个视图显示在给定的组的孩子的数据 |
2.5 时间日期控件
2.5.1 AnalogClock(模拟时钟的显示方式)和DigitalClock
这两个控件都是通过获取系统时间展示给用户。AnalogClock是以模拟时钟的形式展示,DigitalClock是以数字时钟 的形式向用户展示。
2.5.2 DatePicker和TimePiker
用户可以通过这两个控件来设置日期和时间,DatePicker(会在Android 4.0中自动产生一个日历的功能)用于选择日期,TimePicker用于选择时间。
三、五种常用的布局
在Android程序中界面是通过布局文件设定的,在每个应用程序创建会默认包含一个主界面布局,该布局位于res/layout目录中。实际开发中每个应用程序都包含多个界面,而程序默认提供的一个主界面布局无法满足需求,因此经常会在程序中添加多个布局。
在Android中有两种方式创建布局:一种是在项目中的layout文件夹中写XML,将各个布局写在XML中;一种是在程序中通过代码去编写,这种方式一般用得比较少。
四种布局常用的单位:
1.px: 像素,即在屏幕中可以显示最小元素单位。
2.pt: 磅数,一磅等于1/72英寸,一般pt作为字体的单位来显示
3.dp(与密度无关的像素,dp与dip相同): 基于屏幕密度的抽象单位。不同设备由不同的显示效果,更具分辨率的不同来去顶控件的尺寸。
4.sp: 可伸缩像素,采用与dp相同的设计理念,推荐设置文字大小时使用。
3.1 线性布局(LinearLayout)
线性布局就是将一些控件排放在一条线上,但是有水平方向和垂直方向两种。水平和垂直方向的控制由属性android:orientation来控制,这个属性有两个值:垂直(Vertical)和水平(Horizaontal),在线性布局中还有一些比较常用的属性,如:android:gravity、android:weight(控件的权值)等。
<?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"android:background="#ffffff"><LinearLayoutandroid:id="@+id/LinearLayout01"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1.0"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="fill_parent"android:gravity="center_horizontal"android:text="按钮1"android:layout_weight="1.0"/><Buttonandroid:layout_width="wrap_content"android:layout_height="fill_parent"android:gravity="center_horizontal"android:text="按钮2"android:layout_weight="1.0"/><Buttonandroid:layout_width="wrap_content"android:layout_height="fill_parent"android:gravity="center_horizontal"android:text="按钮3"android:layout_weight="1.0"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="按钮4"android:layout_weight="1.0"/><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="按钮5"android:layout_weight="1.0"/><Buttonandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="按钮6"android:layout_weight="1.0"/></LinearLayout>
</LinearLayout>
运行效果效果如下:
3.2 相对布局(RelativelLayout)
线对布局是指按照控件间的相对位置进行布局,也就是说我们可以选一个控件作为参照,其他的控件可以在它的上边、下边、左边及右边等。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:background="#ffffff"><TextViewandroid:id="@+id/textView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="AA"android:textColor="#00FF00"android:textSize="22sp"android:layout_marginLeft="20px"/><TextViewandroid:id="@+id/textRight"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/textView01"android:text="BB"android:textColor="#FF0000"android:textSize="22sp"android:layout_marginLeft="20px"/><TextViewandroid:id="@+id/text02"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView01"android:text="CC"android:textColor="#00FFFF"android:textSize="22sp"android:layout_marginLeft="20px"/><TextViewandroid:id="@+id/textView02"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textRight"android:layout_toRightOf="@id/text02"android:text="DD"android:textColor="#000000"android:textSize="22sp"android:layout_marginLeft="20dip"/></RelativeLayout>
运行结果如下:
BB相对于AA的左边,CC相对于AA的下边边,DD相对于BB的下边且相对于CC的右边
3.3 帧布局(FrameLayout)
帧布局是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素上,将前面的子元素部分和全部遮挡。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/FrameLayout01"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff"><TextViewandroid:id="@+id/TextView01"android:layout_width="1000px"android:layout_height="1000px"android:background="#ff0000"android:text="文本框1"android:textColor="#ffffff"/><TextViewandroid:id="@+id/TextView02"android:layout_width="750px"android:layout_height="750px"android:background="#0000ff"/><TextViewandroid:id="@+id/TextView03"android:layout_width="500px"android:layout_height="500px"android:background="#00ff00"/>
</FrameLayout>
运行结果如下:
3.4 表格布局(TableLayout)
表格布局适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。TableRow的数量决定表格的行数。而表格的列数是由包含最多控件的TableRow决定。
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ffffff"android:stretchColumns="1"><TableRow><TextViewandroid:layout_column = "1"android:padding="3dip"android:textColor="#000000"android:text="open..."/><TextViewandroid:gravity="right"android:padding="3dip"android:textColor="#000000"android:text="Ctrl_o"/></TableRow><Viewandroid:layout_height="2dip"android:background="#FF909090"/><TableRow><TextViewandroid:layout_column = "1"android:padding="3dip"android:textColor="#000000"android:text="Save..."/><TextViewandroid:gravity="right"android:padding="3dip"android:textColor="#000000"android:text="Ctrl_s"/>/></TableRow><Viewandroid:layout_height="2dip"android:background="#FF909090"/><TableRow><TextViewandroid:layout_column = "1"android:padding="3dip"android:textColor="#000000"android:text="Save As..."/><TextViewandroid:gravity="right"android:padding="3dip"android:textColor="#000000"android:text="Ctrl_shift_s"/></TableRow><Viewandroid:layout_height="2dip"android:background="#FF909090"/><TableRow><TextViewandroid:layout_column = "1"android:padding="3dip"android:textColor="#000000"android:text="X"/><TextViewandroid:gravity="right"android:padding="3dip"android:textColor="#000000"android:text="Import..."/></TableRow>
</TableLayout>
运行结果如下:
3.5 绝对布局(AbsoluteLayout)
绝对布局是通过指定x、y坐标来控制每一个控件位置的。
四、参考资料
《从零开始学Android编程》
中国大学慕课网:Android应用开发
中国大学慕课网:Android基础应用开发
[Android Studio]掌握Android Studio的五种常见控件和五种常见布局相关推荐
- Android 第五课 常用控件的使用方法(TextView、Button、EditView、 ImageView、 ProgressBar、 ProgressDialog等)
总结:见名知意 TextView: Button: EditView: ImageView: ProgressBar: ProgressDialog和AlertDialog有些类似,都可以再界面弹出对 ...
- Android之RemoteViews篇上————通知栏和桌面小控件
Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 文章目录 Android之RemoteViews篇上----通知栏和桌面小控件 一.目录 二.RemoteViews的概 ...
- 《深入理解Android 卷III》第六章 深入理解控件(ViewRoot)系统
<深入理解Android 卷III>即将发布,作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分. ...
- Android开发 入门篇(二) - 常用UI控件
文章目录 控件 Button TextView EditText ImageView ProgressBar AlertDialog ProgressDialog 布局 LenearLayout an ...
- 【Android自定义View实战】之自定义评价打分控件RatingBar,可以自定义星星大小和间距...
[Android自定义View实战]之自定义评价打分控件RatingBar,可以自定义星星大小和间距
- android控件使用大全,Android常见控件使用详解
本文实例为大家分享了六种Android常见控件的使用方法,供大家参考,具体内容如下 1.TextView 主要用于界面上显示一段文本信息 2.Button 用于和用户交互的一个按钮控件 //为Butt ...
- android menu item 显示,Android 如何通过menu id来得到menu item 控件 .
Android 如何通过menu id来得到menu item 控件 . (2012-07-21 06:43:31) 标签: android 如何 杂谈 Android 如何通过menu id来得到m ...
- android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题
50_样式与主题 android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2013/5/12 50_样式与主题 ----------------- android样式和主题(st ...
- Gridview数据控件的七种字段类型
9.8 数据控件的七种字段类型(Fields Type)的应用 GridView共支持七种字段类型,字段原本应该叫"Column"比较恰当,但ASP.NET 2.0却采用另一个名 ...
最新文章
- TinyML-TVM是如何驯服Tiny的(下)
- 《Effective Java》读书笔记--创建和销毁对象
- 机器学习中的数学 人工智能深度学习技术丛书
- 移动端触屏click点击事件延迟问题,以及tap的解决方案
- c++ 一日一练:istream.rdbuf(ostringstream.rdbuf())无效!
- 关于 ES6 的 let ,var和 const
- Compiling Cpp(zz)
- 是vans_硬核复刻,就服VANS棋盘格
- python和c++无缝对接_总结:Python学习 和 Python与C/C++交互
- 国产数据库发展十策(二):数据库难在研发还是难在生态?
- 2017-2018-1 20179215 《从问题到程序》第三章
- android之添加raw文件
- ASP.NET或者 js方式实现文件夹多图片浏览的方式
- Spark入门实战系列--6.SparkSQL(下)--Spark实战应用
- day10 强制类型转换(更新)
- Java用WebSocket + tail命令实现Web实时日志
- c语言寻找完全平方数,菜鸟求助,要怎么求完全平方数?
- 梨视频中的旅行短视频怎么批量下载到电脑中
- 双群晖nas数据备份同步
- 淘宝Buy+负责人胡晓航:从技术和产品维度看Buy+ VR购物
热门文章
- win10无线网卡无法连接网络
- 红米手机5 Plus启用root超级权限的步骤
- 平均年薪50万,学好python程序员到底有多吃香?
- bnu1061 古墓丽影 C语言版
- QQ安全检查未通过,禁止下载该文件
- LSVGlobal Mapper应用----地形裁剪
- JQuery $(function(){})和$(document).ready(function(){})
- Linux的安装与Linux下PHP开发环境的搭建(LAMP)
- loop与for loop分别实现乘法口诀表
- 装饰工程预算方案的审查