Android开发之那些好用的数据结构与API(二)
在 Android开发之那些好用的数据结构与API 一文中提到了Android中一些好用的数据结构和API,这次继续补充几个我在项目中用到的好用的但是不是人人都知道的东东 ~~
1、android:digits
在Android开发中,经常要设置EditText为密码显示,但是通常要求密码只能是 字母和数字 . _ 的组合,此时就可以用该属性进行过滤
<EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:digits="0123456789abcdefghigklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM._" />
复制代码
测试效果
2、setKeyListener()
接着上面说,还有一种方法也可以限定EditText输入字符,那就是给EditText设置KeyListener
et.setKeyListener(new NumberKeyListener() {//限制弹出的键盘类型public int getInputType() {return InputType.TYPE_CLASS_NUMBER;}//限定输入的字符protected char[] getAcceptedChars() {char[] numbers = new char[]{'.', '1', '3', '5', '7', '9'};return numbers;}});
复制代码
测试效果
3、ListView 的 setEmptyView
该方法可以为没有数据的ListView 设置一个提示View,常常用在ListView没有加载到数据或加载数据失败时提示
布局 (需要准备一个背景透明的提示图片)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><ListViewandroid:id="@+id/list"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#123456" /><ImageViewandroid:id="@+id/empty"android:layout_width="match_parent "android:layout_height="match_parent"android:layout_centerInParent="true"android:src="@mipmap/nomorenomal" /></RelativeLayout>复制代码
Activity
public class MainActivity extends AppCompatActivity {private ListView mliListView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mliListView = (ListView) findViewById(R.id.list);mliListView.setEmptyView(findViewById(R.id.empty));}}
复制代码
测试效果
注意 经过本人测试,如果ListView包含在某些下拉刷新框架中,这样做是没有效果的,应该是冲突了。
4、android:duplicateParentState="true"
该属性可以让子View跟随其Parent的状态。常见的使用场景是某个按钮特别小,为了设置点击事件,给其包裹一层Parent布局,将点击事件写到Parent上,如果希望被包裹按钮的点击效果对应的Selector继续生效的话,就可以使用它了,来个有说服力的测试案例。
准备好4个图片,做成2个 StateListDrawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 触摸模式下单击时的背景图片--><item android:drawable="@drawable/backp" android:state_pressed="true" /><!-- 默认时的背景图片--><item android:drawable="@drawable/bacn" />
</selector>复制代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/press" android:state_pressed="true" /><item android:drawable="@drawable/nomal" />
</selector>复制代码
布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><RelativeLayoutandroid:id="@+id/content"android:layout_width="300dp"android:layout_height="300dp"android:layout_centerInParent="true"android:background="@drawable/selector_back"><Buttonandroid:layout_width="50dp"android:layout_height="50dp"android:layout_alignParentBottom="true"android:background="@drawable/selector"android:duplicateParentState="true" /></RelativeLayout></RelativeLayout>复制代码
此时直接运行测试,只有按钮有点击事件,直接点击按钮
给RelativeLayout添加点击事件
RelativeLayout rl = (RelativeLayout) findViewById(R.id.content);rl.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {}});
复制代码
此时运行测试,按钮和相对布局都有点击事件,点击相对布局,发现按钮并没有变化
给Button添加 android:duplicateParentState="true
<Buttonandroid:layout_width="50dp"android:layout_height="50dp"android:layout_alignParentBottom="true"android:background="@drawable/selector"android:duplicateParentState="true" />
复制代码
再次运行测试,再次点击相对布局,发现按钮也跟着变化了
转载于:https://juejin.im/post/5a311383f265da433562c280
Android开发之那些好用的数据结构与API(二)相关推荐
- Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表
转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51290181 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现NetM ...
- Android开发丶openinstall的集成和使用(推广二维码)
在项目开发过程中,负责的推广二维码模块需要加入openinstall三方框架,该框架可以在推广二维码中搭建一层上下级关系,加上一定的积分奖励,极大地提高了用户的推广热情,并且不同于以往常规的手动填写邀 ...
- Android 开发 17 年 5 月份面试问题总结(二)
Android 部分 内存优化.OOM 异常的检测以及处理 图片的处理 软引用处理图片 图片软引用 简单自己用WeakReference做一个bitmap缓存池,也可以用类似图片加载库写一个通用的bi ...
- 学徒浅析Android开发:第三讲——Dialog的常用方法介绍(二)
经过(一)的基础介绍,现在小编将在(二)中给大家介绍以下几种效果: 1.点击查看组图(模拟QQ空间图片浏览) 2.缩略图放大(自定义Dialog) 3.动态加载进度条 一.点击产看组图(模拟QQ空间图 ...
- Android开发学习之以CameraAPI方式实现相机功能(二)——相机功能配置
接着我们在上一篇文章中实现的简单项目,现在我们继续为这个相机添加功能.首先,在Camera中,我们可以对相机进行简单的控制,而当我们需要进行更多的功能上的配置上的时候,我们需要使用Camera下面的P ...
- Android开发笔记(序)写在前面的目录
知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入 ...
- Android开发笔记(序)
本开发笔记,借鉴与其他开发者整理的文章范例与心得体会.在这里作为开发过程中的一个总结与笔记式记录. 如有侵犯作者权益,请及时联系告知删除.俗话说:集百家成一言,去粕成金. ************** ...
- Android开发笔记(序)写在前面的目录大全
转自 湖前琴亭 的博客https://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面 ...
- Andriod开发之二十:Android开发笔记(序)写在前面的目录
https://blog.csdn.net/aqi00/article/details/50038385 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教 ...
最新文章
- YOLOv4全文阅读(全文中文翻译)
- java字符串的知识总结
- [译]Godot系列教程一 - 场景与节点
- oracle使用sqlplus创建表空间
- Windows环境:VMware下linux虚拟机与Windows主机进行文件共享的方法
- 在MySQL 5.7下排查内存泄露和OOM问题全过程
- cdr放大后内容消失了_今日推荐:AI智能图片清晰放大神器强势来袭,简直无敌了...
- 读《现代软件工程--构建之法》所思
- 物化视图的刷新方式说明
- lisp调用dcl单选框_AutoLISP单选按钮RADIO_BUTTON设计插入图块
- html中transition默认,CSS3中的Transition详解
- IDEA 配置log4j
- HTML和CSS实现京东登录页面(html,css代码详解)
- 麻省理工学院计算机博士几年,破译「罗塞塔石碑」要几十年?华裔MIT博士开发新系统,快速解密...
- 哪里看苹果是att_我告诉你怎么看手机版本是s跟att
- android numberpicker 自定义,Android的自定义数字Picker控件-NumberPicker使用方法
- MyBatis---缓存-提高检索效率的利器
- 【NLP】文本数据分析文本特征处理文本数据增强
- 配置vscode C语言运行环境(保姆级教程)
- arctanx麦克劳林公式推导过程_从量纲分析的角度推导高中物理公式
热门文章
- 技能设计漫谈 ——从游戏性和流畅角度来看技能的设计要点。
- 解决Retrying connect to server: 192.168.x.x:8032. Already tried 0 time(s); retry policy is...
- 如何合理的拆分微服务
- java语言基础(七):Collection、泛型、案例:斗地主
- 搜索思维[PPT制作]
- 变中求生 ——频繁变化的团队如何打造团队文化
- android中隐藏的功能,iOS与Android的奥秘:那些你未必了解的隐藏功能
- B.FRiEND MK7机械式电竞键盘-Cherry樱桃轴搭配纯净白光!
- 使用math.sin时报错only size-1 arrays can be converted to Python scalar
- 大数据框架之Zookeeper详解