1. 什么是兼容性控件?
做过Android开发的同学应该很了解兼容性,意思就是让不同分辨率的手机看起来差别不是很大。但是你知道兼容性控件吗?其实就是同一个控件在不同android版本上(例如4.4和5.0)看起来差别不大。啥?同一个控件在不同版本上看起来不一样?上图。
代码:
AlertDialog.Builder builder = new Builder(MainActivity.this);
builder.setTitle("对话框");
builder.setMessage("测试对话框");
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
builder.show();
这就是刚才说的同一个控件在不同android系统上的差距,大家觉得哪一个更好看呢?应该是高版本的更好一些。但是如果你仅仅这样写AlertDialog,那么程序猿公敌–产品经理该跳出来说:你这样写不行啊,4.4的太难看了,我们要和5.0一样,统一UI,巴拉巴拉一大堆。有的同学可能要懵逼了,我擦,这咋办,想了一会,决定自定义布局来实现AlertDialog里面的内容。确实,自定义布局可以实现UI统一,但是,有没有更简单的方法呢?有, 接着往下看。
2. 如何处理?
对同一个控件在不同android系统上的差距显示这一问题,Google其实也意识到了,于是他推出了一系列的兼容控件来供程序员们使用,在v7包下面。对于上面的AlertDialog,修改一下代码:
将普通的AlertDialog 改为V7下的AlertDialog, 在上图:
哇,是不是感觉和谐多了,4.4和6.0的显示完全一样了,这下,看产品经理还有啥可说的!!!
当然不仅仅是AlertDialog存在这个问题,很多其他控件也存在这样的问题。比如
EditTExt:
使用android.support.v7.widget.AppCompatEditText:
在V7包里除了这些兼容性控件,还有一些其他好用的控件。比如Google官方推出的下拉刷新控件:SwipeRefreshLayout(android.support.v4.widget.SwipeRefreshLayout)。
还蛮小清新的,哈哈。这个和RecycleView配合起来,做出来的东西效果应该很不错。
还有 PopupWindow ListPopupWindow PopupMenu都是很好用的控件,大家可以自己试试。
3. 总结
使用这些兼容性控件可以帮助我们解决很多问题。在以后的博客里,我会陆续向大家介绍MaterialDesign的更多知识,谢谢观看。