Android基础——View和ViewGroup
View和ViewGroup
- 什么是View?
- 什么是ViewGroup?
- 继承层次图
- 基本属性
- 常用ViewGroup介绍
- 线性布局
- 相对布局
- 帧布局
- 常用View介绍
- TextView
- Button
- Button点击事件实现
- 在控件添加onClick属性
- 匿名内部类
- 通过Activity继承View.OnClickListener
- EditText
- ImageView
- 其他常用控件
- Menu
- ProgressBar
- AlertDialog
什么是View?
View是最基本的控件,在屏幕上显示为一块矩形区域。所有的控件直接或间接的继承View。View常用于在轮播图程序中显示当前的轮播状态。
什么是ViewGroup?
ViewGroup是可以放置子View和子ViewGroup的容器,通过一定的规律调整内部控件的位置。View和ViewGroup通过嵌套完成对复杂界面的绘制。
继承层次图
基本属性
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
<?xml version="1.0" encoding="utf-8"?> | xml版本和编码格式 | ||
xmlns:android | http://schemas.android.com/apk/res/android | XML namespace,避免元素命名冲突 | |
android:id | @+id/string |
1.@+id/string表示定义一个名为string的id 2. @id/string表示引用名为string的id |
|
android:layout_width |
1. match_parent 2.wrap_content 3.自定义 |
1.match_parent表示与父元素一样宽 2.wrap_content表示宽度刚好包裹内容 3.单位dp |
|
android:layout_height |
1. match_parent 2.wrap_content 3.自定义 |
同上 | |
android:gravity |
top、bottom、left、right、center center_vertical、center_horizontal等 |
指定文字在控件中的对齐方式 | |
android:layout_gravity | 同上 | 指定控件在布局中的对齐方式 | |
android:visibility | gone、visible、invisible | View.setVisibility() |
visible可见 invisible不可见但占据原来位置和大小 gone不可见且不占用屏幕 |
android:background | #00000000-#ffffffff或图片填充 | View.setBackground() | |
android:layout_margin | 自定义 | 指定控件在上下左右方向上偏移的距离,也可单独指定 | |
android:padding | 自定义 | 指定控件在上下左右方向上的内边距,也可单独指定 |
常用ViewGroup介绍
线性布局
LinearLayout会将所包含的控件在线性方向上依次排列。
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
android:orientation | vertical、horizontal | 默认horizontal | |
android:layout_weight | 自定义 | 按比例指定控件大小,使用时将宽度或高度置0 |
Tips:
- 当排列方向为horizontal时,内部控件就不能将宽度指定为match_parent,否则第一个控件就会将水平方向占满,导致其他控件没有可放置位置。
- 同理,当排列方向为vertical时,内部控件就不能将高度指定为match_parent
相对布局
RelativeLayout通过相对定位的方式放置控件,其属性大多看名知意,不介绍。
帧布局
FrameLayout中所有的控件都会默认摆放在布局的左上角,后面的控件有可能会覆盖前面的控件。
常用View介绍
TextView
TextView继承View,用于在界面显示一段文本信息,其属性主要是对文本样式的操作。
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
android:text | 自定义 | getText()、setText() | 通过alt+enter将值抽出到string.xml中 |
android:textSize | 自定义 | 单位sp | |
android:textColor | #00000000-#ffffffff | RGBA | |
android:singleLine | 自定义 | 指定最大长度 | |
android:ellipsize | end、start、marquee | 文本缩略方式,通常和上面的一起使用 |
其中文本获取和修改:
TextView tv = findViewById(R.id.tv);
Log.d("MainActivity", tv.getText().toString());
tv.setText("java");
Button
Button继承TextView,用于用户的点击,故TextView的属性都可用于Button
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
android:textAllCaps | true、false | 默认true,对所有英文字母自动进行大写转换 |
Button点击事件实现
在控件添加onClick属性
onClick属性的值对应方法名
android:onClick="click1"
在对应MainActivity添加方法
public void click1(View view) {}
匿名内部类
找到控件,给按钮设置监听器,创建匿名监听器
Button button=findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {}
});
通过Activity继承View.OnClickListener
找到控件将自身设置为监听器,重写接口里的onClick()方法,内部根据按钮id判断
Button button=findViewById(R.id.btn);
button.setOnClickListener(this);@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn:break;default:break;}}
EditText
EditText继承TextView,用于输入和编辑文本,其属性主要是对文本内容的控制。
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
android:hint | 自定义 | 提示文本 | |
android:maxLines | 自定义 | 限制文本最大行数,当超过最大行数时,文本就会向上滚动 |
ImageView
ImageView继承View,用于在界面显示图片,其属性主要是对图片的控制。
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
android:src |
@mipmap/xxx @drawable/xxx |
setImageResource() | 图片放在mipmap或drawable |
其中图片的替换:
ImageView iv=findViewById(R.id.iv);
iv.setImageResource(R.drawable.pic2);
其他常用控件
Menu
在res中新建menu文件夹,创建menu.xml,其中item标签对应具体菜单项(二级菜单则嵌套menu),代码如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/item1"android:title="item1"/><itemandroid:id="@+id/item2"android:title="item2"/>
</menu>
在Activity中重写onCreateOptionsMenu和onOptionsItemSelected方法。
onCreateOptionsMenu用于加载菜单项,通过getMenuInflater()获取MenuInflater再调用inflate方法,第一个参数为待创建的菜单项,第二个参数指定创建后的菜单项将添加到哪个Menu对象中。最后返回ture显示创建后的菜单,false不显示,具体如下:
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.menu, menu);return true;}
onOptionsItemSelected对应菜单中的点击事件,通过item.getItemId()判断点击的是哪一个菜单项,具体如下:
@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {switch (item.getItemId()){case R.id.item1:break;case R.id.item2:break;default:}return true;}
运行效果如下:
点击后展开菜单项:
ProgressBar
ProgressBar继承View,用于显示进度条,其主要属性是对进度条的控制。
属性 | 值 | 对应函数 | 备注 |
---|---|---|---|
style | ?android:attr/progressBarStyleHorizontal | 修改为水平进度条 | |
android:max | 自定义 | ||
android:progress | 自定义 | setProgress() | 当前进度 |
AlertDialog
AlertDialog继承Dialog,在当前界面弹出一个对话框,该对话框可置顶于所有界面元素之上,用于提示和警告。创建AlertDialog设置相关属性和点击事件:
AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);dialog.setTitle("AlertDialog");dialog.setMessage("Message");dialog.setCancelable(false);dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});
Android基础——View和ViewGroup相关推荐
- Android(四)——View和ViewGroup
文章目录 1. 用户界面概述 2. View类常用属性 3. ViewGroup类 4. UI组件的层次结构 1. 用户界面概述 在Android APP中,所有的用户界面元素都是由View和View ...
- 【Android】Android自定义View和ViewGroup知识点汇总
一.View的绘制流程 onMeasure()->onDraw(). 二.ViewGroup的绘制流程 onMeasure()->onLayout()->onDraw()(一般不重写 ...
- Android 让View 和 ViewGroup 同时响应点击或者长按事件
面试的时候,被问到如何让View 和 其 父View 同时响应长按事件. 我还记得当时自己的回答,子View 里面 处理了长按事件,但是返回了false, 没有处理,然后会继续调用到父View 的长按 ...
- Android基础View回顾
为了提高工作效率,对一些常见View的特殊用法作一下总结. 一.进度条对话框 坑:https://blog.csdn.net/nailsoul/article/details/38870827 (Pr ...
- Android 基础 View 系列之 仿IPhone 开关控件
极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能 自定义View 是Android中常用的方法之一,本章实现类似于IPhone 开关控 ...
- Android基础:Android概念
Android概念 基础概念 第一个Android程序 View 和 ViewGroup Android控件通用属性 基础概念 Android的界面是承载在一个或者多个Activity上. Activ ...
- Android自定义View:ViewGroup(三)
自定义ViewGroup本质是什么? 自定义ViewGroup本质上就干一件事--layout. layout 我们知道ViewGroup是一个组合View,它与普通的基本View(只要不是ViewG ...
- 【Android 界面效果10】Android中View,ViewGroup,Window之间的关系
一.首先说说View和ViewGroup吧 Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础上的.所有View的子类成为"Widget",所有V ...
- Android自定义view之基础知识
Android自定义view之基础知识 虽然Android已经自带了很多实用的view和layout,加以调教能实现很美观的界面,但是有一些情况下,需要实现特殊的界面效果,比如我们比较熟悉的各种播放器 ...
最新文章
- 分享Kali Linux 2016.2第43周虚拟机
- codeforces 7.22 F Pairwise Modulo
- Qt Creator添加新的自定义向导
- spring step 1 : 什么是spring
- 机器学习笔记(七)——决策树模型
- 整理了一个带语法高亮显示,及到处html功能的richtextbox控件
- mysql与mysqli
- win7 计算机定时关机脚本,定时关机命令,教您怎么使用命令行定时关机
- Vue.2Vue.3项目引入Element-UI教程踩坑
- JMeter接口压力测试实战教程
- 计算机edp测试是什么测试,五、信息工具--(一)EDP:电子数据处理
- 《我与长安城的朝花夕拾》
- 华三防火墙web端口_华三防火墙开放端口 华三防火墙怎么登录
- 服务器防火墙关闭开机自启解决方案
- VS2005宏无法运行的问题(打了补丁MS14-009之后)
- 微信小程序猜数字小游戏
- 【计算机网络】湖科大学习笔记---数据链路层
- 射频微波芯片设计5:电源旁路电容为何选择0.1uF 10uF?
- 笔记本电脑wifi图标变成了小地球的解决办法(留日后查看)
- 服务器凌晨莫名奇妙自动重启解决方案