android编程之代码布局(三)
来源:互联网 发布:中国科学院大学知乎 编辑:程序博客网 时间:2024/05/17 23:42
前两篇介绍了一般常用的布局组件写法,这一次,再来看看其他组件的
一、listview
listview也和大多数组件一样,一般会在这里难住的,就是自定义布局样式的时候。
- // 创建LinearLayout对象
- LinearLayout mRelativeLayout = new LinearLayout(this);
- mRelativeLayout.setLayoutParams(new LinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
- // 创建ListView对象
- ListView mListView = new ListView(this);
- mListView.setAdapter(new ListAdapter(this, mVector));
- // 添加组件
- mRelativeLayout.addView(mListView, new LayoutParams(
- LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
其中,ListAdapter为继承BaseAdapter的自定义类。
mVector是我们自定义的数据,里面包含了两个名字:小明,小刚。
接下来,我们看看重点的ListAdapter是如何自定义布局的
- public class ListAdapter extends BaseAdapter {
- private Vector<String> mVector;
- private Context mContext;
- public ListAdapter(Context mContext, Vector<String> mVector) {
- this.mContext = mContext;
- this.mVector = mVector;
- }
- public Object getItem(int position) {
- return null;
- }
- public long getItemId(int position) {
- return 0;
- }
- public int getCount() {
- return mVector.size();
- }
- class ViewHolder {
- ImageView head;
- TextView name;
- }
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder holder = null;
- RelativeLayout rl = null;
- if (convertView == null) {
- rl = new RelativeLayout(mContext);
- rl.setBackgroundDrawable(bitmapDrawable_listitembg);
- // head
- ImageView head = new ImageView(mContext);
- head.setId(1);
- RelativeLayout.LayoutParams mLayoutParams = new RelativeLayout.LayoutParams(
- 64, 64);
- mLayoutParams.topMargin = 15;
- mLayoutParams.leftMargin = 10;
- mLayoutParams.bottomMargin = 15;
- mLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL);
- rl.addView(head, mLayoutParams);
- // nickname
- TextView mTextView = new TextView(mContext);
- mTextView.setTextSize(20);
- mTextView.setTextColor(0xff000000);
- mTextView.setId(2);
- mLayoutParams = new RelativeLayout.LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- mLayoutParams.topMargin = 10;
- mLayoutParams.leftMargin = 10;
- mLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);
- rl.addView(mTextView, mLayoutParams);
- holder = new ViewHolder();
- holder.head = head;
- holder.name = mTextView;
- rl.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- rl = (RelativeLayout) convertView;
- }
- holder.head.setImageDrawable(bitmapDrawable_headimage);
- holder.name.setText(mVector.elementAt(position));
- return rl;
- }
- }
如果对之前讲的相对布局看过的话,这里对自定义布局的写法应该不难理解。
定义了一个头像ImageView和一个名字TextView。让头像距离上下左各有一段距离,然后让名字在头像右边显示,并距离头像右一定距离。
关于布局背景图片的设置:rl.setBackgroundDrawable(bitmapDrawable_listitembg);设置的图片是从asset中读取得到的,头像的也是。
最后附上显示效果:
阅读全文
0 0
- android编程之代码布局(三)
- android编程之代码布局(三)
- android编程之代码布局(三)
- android编程之代码布局(三)
- android编程之代码布局(一)
- android编程之代码布局(二)
- android编程之代码布局(一)
- android编程之代码布局(二)
- android编程之代码布局(一)
- android编程之代码布局(二)
- android编程之代码布局(一)
- android编程之代码布局(一)
- android编程之代码布局(二)
- android编程之代码布局
- android编程之代码布局
- android编程之代码布局
- android编程之代码布局(常见错误)
- android编程之代码布局(常见错误)
- cordova学习之五创建ionic1版本的项目
- eclipse Maven插件的安装地址
- linux常用查看日志方法
- 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)
- 面试题29—数组中出现次数超过一半的数字
- android编程之代码布局(三)
- 使用shell重启tomcat
- APP开发流程
- Django——相关知识(二)
- 利用SecureCRT上传、下载文件(使用sz与rz命令)
- Java中判断字符串是否为数字的五种方法
- ROS运行python脚本报错: No module named srv
- apicloud安卓系统下载并安装APK
- 项目中的小问题