博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之那些好用的数据结构与API(二)
阅读量:6387 次
发布时间:2019-06-23

本文共 1959 字,大约阅读时间需要 6 分钟。

在 一文中提到了Android中一些好用的数据结构和API,这次继续补充几个我在项目中用到的好用的但是不是人人都知道的东东 ~~

1、android:digits

在Android开发中,经常要设置EditText为密码显示,但是通常要求密码只能是 字母和数字 . _ 的组合,此时就可以用该属性进行过滤

复制代码

测试效果

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没有加载到数据或加载数据失败时提示

布局 (需要准备一个背景透明的提示图片)

复制代码

Activity

public class MainActivity extends AppCompatActivity {    private ListView mliListView;    @Override    protected 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

复制代码
复制代码

布局

复制代码

此时直接运行测试,只有按钮有点击事件,直接点击按钮

给RelativeLayout添加点击事件

RelativeLayout rl = (RelativeLayout) findViewById(R.id.content);rl.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {            }        });复制代码

此时运行测试,按钮和相对布局都有点击事件,点击相对布局,发现按钮并没有变化

给Button添加 android:duplicateParentState="true

复制代码

再次运行测试,再次点击相对布局,发现按钮也跟着变化了

转载于:https://juejin.im/post/5a311383f265da433562c280

你可能感兴趣的文章
linux下磁盘挂载与查看
查看>>
javascript 闭包
查看>>
如何减少浏览器repaint和reflow(上)
查看>>
Exchange 2010之收件人对象管理
查看>>
Yarn详解
查看>>
C与C++《精通Unix下C语言与项目实践》读书笔记(8)
查看>>
计算机达人成长之路(6)连载
查看>>
raid5分析结果(临时)
查看>>
Enterprise Library 2.0 Hands On Lab 翻译(11):缓存应用程序块(三)
查看>>
【REACT NATIVE 系列教程之四】刷新组件RENDER(重新渲染)的三种方式详解
查看>>
foreman架构的引入4-安装Foreman1.6.3架构(foreman与puppetmaster分离)
查看>>
【Xamarin】使用WebSocket开发实时通信应用程序
查看>>
配置Docker多台宿主机间的容器互联
查看>>
Android系统Surface机制的SurfaceFlinger服务的线程模型分析
查看>>
Webpack中publicPath设置
查看>>
event.srcElement的用法
查看>>
“页面制作人员”?“页面工程师”?“页面架构师”?滚一边去!
查看>>
C++:派生类的构造函数和析构函数
查看>>
2012 Autodesk开发者日开始注册啦
查看>>
ASP.NET 2.0 验证控件新的功能
查看>>