android编程之代码布局(三)

来源:互联网 发布:中国科学院大学知乎 编辑:程序博客网 时间:2024/05/17 23:42

前两篇介绍了一般常用的布局组件写法,这一次,再来看看其他组件的

一、listview

listview也和大多数组件一样,一般会在这里难住的,就是自定义布局样式的时候。

[java] view plain copy
print?
  1. // 创建LinearLayout对象  
  2. LinearLayout mRelativeLayout = new LinearLayout(this);  
  3. mRelativeLayout.setLayoutParams(new LinearLayout.LayoutParams(  
  4.         LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
  5.   
  6. //  创建ListView对象  
  7. ListView mListView = new ListView(this);  
  8. mListView.setAdapter(new ListAdapter(this, mVector));  
  9.   
  10. // 添加组件  
  11. mRelativeLayout.addView(mListView, new LayoutParams(  
  12.         LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  

其中,ListAdapter为继承BaseAdapter的自定义类。

mVector是我们自定义的数据,里面包含了两个名字:小明,小刚。

接下来,我们看看重点的ListAdapter是如何自定义布局的

[java] view plain copy
print?
  1. public class ListAdapter extends BaseAdapter {  
  2.     private Vector<String> mVector;  
  3.   
  4.     private Context mContext;  
  5.   
  6.     public ListAdapter(Context mContext, Vector<String> mVector) {  
  7.         this.mContext = mContext;  
  8.         this.mVector = mVector;  
  9.     }  
  10.   
  11.     public Object getItem(int position) {  
  12.         return null;  
  13.     }  
  14.   
  15.     public long getItemId(int position) {  
  16.         return 0;  
  17.     }  
  18.   
  19.     public int getCount() {  
  20.         return mVector.size();  
  21.     }  
  22.   
  23.     class ViewHolder {  
  24.         ImageView head;  
  25.         TextView name;  
  26.     }  
  27.   
  28.     public View getView(int position, View convertView, ViewGroup parent) {  
  29.         ViewHolder holder = null;  
  30.         RelativeLayout rl = null;  
  31.         if (convertView == null) {  
  32.             rl = new RelativeLayout(mContext);  
  33.             rl.setBackgroundDrawable(bitmapDrawable_listitembg);  
  34.   
  35.             // head  
  36.             ImageView head = new ImageView(mContext);  
  37.             head.setId(1);  
  38.               
  39.             RelativeLayout.LayoutParams mLayoutParams = new RelativeLayout.LayoutParams(  
  40.                     6464);  
  41.             mLayoutParams.topMargin = 15;  
  42.             mLayoutParams.leftMargin = 10;  
  43.             mLayoutParams.bottomMargin = 15;  
  44.             mLayoutParams.addRule(RelativeLayout.CENTER_VERTICAL);  
  45.             rl.addView(head, mLayoutParams);  
  46.   
  47.             // nickname  
  48.             TextView mTextView = new TextView(mContext);  
  49.             mTextView.setTextSize(20);  
  50.             mTextView.setTextColor(0xff000000);  
  51.             mTextView.setId(2);  
  52.   
  53.             mLayoutParams = new RelativeLayout.LayoutParams(  
  54.                     LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  55.             mLayoutParams.topMargin = 10;  
  56.             mLayoutParams.leftMargin = 10;  
  57.             mLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);  
  58.             rl.addView(mTextView, mLayoutParams);  
  59.   
  60.               
  61.             holder = new ViewHolder();  
  62.             holder.head = head;  
  63.             holder.name = mTextView;  
  64.             rl.setTag(holder);  
  65.         } else {  
  66.             holder = (ViewHolder) convertView.getTag();  
  67.             rl = (RelativeLayout) convertView;  
  68.         }  
  69.   
  70.         holder.head.setImageDrawable(bitmapDrawable_headimage);  
  71.         holder.name.setText(mVector.elementAt(position));  
  72.   
  73.         return rl;  
  74.     }  
  75. }  

如果对之前讲的相对布局看过的话,这里对自定义布局的写法应该不难理解。
定义了一个头像ImageView和一个名字TextView。让头像距离上下左各有一段距离,然后让名字在头像右边显示,并距离头像右一定距离。

关于布局背景图片的设置:rl.setBackgroundDrawable(bitmapDrawable_listitembg);设置的图片是从asset中读取得到的,头像的也是。

最后附上显示效果:

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 看完的小说想要卖掉该怎么办 在俄罗斯脸干了痛怎么办 苹果手表电池放亏了怎么办 平板电脑电池不耐用怎么办 计算机电池放入后没反应怎么办 笔记本电脑玩游戏花屏怎么办 笔记本玩游戏花屏怎么办 笔记本电脑充电插口坏了怎么办 车蓄电池没电了怎么办 汤浅q85电瓶亏电怎么办 富士康自离行李怎么办 微店红酒食品认证怎么办 yy频道提示禁止游客进入怎么办 口红颜色太艳了怎么办 我在菲律宾想走怎么办 当国家流通货币不够用怎么办 苹果5s账号密码忘记怎么办 钢铁雄心3补给不足怎么办 灯外观颜色太难看了怎么办 被移民公司骗了怎么办 文明5大包锁区怎么办 鸭子被黄鼠狼叼走了怎么办 黄鼠狼再店了拉屎怎么办 我只有信用卡但是又想去嫖怎么办 瑞士退税单掉了怎么办 装了新风噪音大怎么办 意大利 护照被偷了怎么办 请问去意大利要怎么办护照 在意大利护照丢了怎么办 考研二战档案打回原籍怎么办 脸上的肉往下掉怎么办 眼镜带了往下掉怎么办 孩子捅别的孩子眼睛了怎么办 眼睛不小心捅伤怎么办 我的爸爸是小偷怎么办 违停罚款忘记交怎么办 顺风车无人接单怎么办 来例假腰特别疼怎么办 把人撞死了全责怎么办 朝鲜与美合作对付中国怎么办 申请美国大学gpa不够怎么办