在自定義的控件中,儘量使用相對佈局,這樣比較好控制控件的位置。同時也對控件屬性的使用有了進一步瞭解。代碼舉例如下:
要實現的效果:
代碼:
public class WPersonalItemView extends RelativeLayout{
private Context mContext;
private ImageView iv_left;
private TextView tv_content;
private TextView tv_count;
private ImageView iv_next;
public WPersonalItemView(Context context) {
super(context);
mContext=context;
init();
initViews();
}
/**
* 傳遞參數,可改變左側圖標和文本內容
* @param context
* @param leftId
* @param rightId
*/
public WPersonalItemView(Context context,int leftId,String content,String count) {
super(context);
mContext=context;
init();
initViews();
if(leftId>0){
iv_left.setImageResource(rightId);
}
if(content!=null){
tv_content.setText(content);
}
if(count!=null){
tv_count.setText(count);
}
}
private void init() {
setBackgroundColor(Color.WHITE);
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
setPadding(UIUtils.dip2px(8), UIUtils.dip2px(20), UIUtils.dip2px(8), UIUtils.dip2px(20));
}
private void initViews() {
iv_left = new ImageView(mContext);
iv_left.setImageResource(R.drawable.ic_launcher);
iv_left.setId(0x000601);
RelativeLayout.LayoutParams lp0 = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp0.addRule(RelativeLayout.CENTER_VERTICAL);
lp0.addRule(RelativeLayout.ALIGN_PARENT_LEFT,RelativeLayout.TRUE);
addView(iv_left,lp0);
tv_content = new TextView(mContext);
tv_content.setText("我的收藏");
tv_content.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_VERTICAL);
lp.addRule(RelativeLayout.RIGHT_OF,0x000601);
lp.leftMargin=UIUtils.dip2px(25);
addView(tv_content,lp);
tv_count = new TextView(mContext);
tv_count.setText("3");
tv_count.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp2.addRule(RelativeLayout.CENTER_VERTICAL);
lp2.addRule(RelativeLayout.LEFT_OF,0x000602);
lp2.rightMargin=UIUtils.dip2px(25);
addView(tv_count,lp2);
iv_next = new ImageView(mContext);
iv_next.setId(0x000602);
iv_next.setImageResource(R.drawable.right_arrow);
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.CENTER_VERTICAL);
lp1.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
iv_next.setLayoutParams(lp1);
addView(iv_next);
}
}