在 一文中提到了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
复制代码
再次运行测试,再次点击相对布局,发现按钮也跟着变化了