布局文件中如果添加Button,并指定其text为”button”的话,但是显示的是”BUTTON”,全部变为大写了,要去掉这一效果,可以添加属性android:textAllCaps=”false”
RelativeLayout 中还有另外一组对于控件进行定位的属性,android:layout_alignLeft表示让一个控件的左边缘和另一个控件的左边缘对齐,同理,还有android:layout_alignRight、Top、Bottom 。
创建自定义控件
我们所用的所有控件都是直接或者间接继承自View的,所有的布局都是直接或者间接继承ViewGroup,View是Android中最基本的一种UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是在View的基础上添加各自特有功能;而ViewGroup则是一种特殊的View,它可以包含很多子View和子ViewGroup,是一个防止控件和布局的容器。常用控件和布局的继承结构如下图所示:
App中的标题栏几乎在每个界面都是一样的,除了标题不一样,其他的诸如左边按钮点击就finish当前页面,右边的是菜单按钮,这些功能基本上一样,如果在每个页面都单独为这些按钮重复添加相同的监听,比较繁琐。所以可以将标题栏单独封装成单独的一个TitleLayout的,每次只需要引入到布局中即可。
使用listview
可以继承ArrayAdapter简化操作,类似如下(当然,这里在getView的时候没有进行复用优化,仅仅只是示例):
1 | public class FruitAdapter extends ArrayAdapter<Fruit>{ |
使用更强大的RecyclerView
在设置LayoutManager的时候,可以指定排布的方向比如以下代码:
1 | LinearLayoutManager manager = new LinearLayoutManager(this); |
为什么Listview很难或者根本无法实现这种效果呢,其实这主要得益于RecyclerView的出色设计,ListView的布局排列是由自身去管理的,,而RecyclerView则将这个工作交给了LayoutManager,LayoutManager指定了一套可扩展的布局排列接口,自雷只要按照接口的规范来实现,就能定制出不同排列方式的布局了。
实现点击事件,可以在Adapter中的onCreateViewHolder方法中来做到,诸如以下实现:
1 |
|