純代碼實現基本控件組合的自定義控件

在自定義的控件中,儘量使用相對佈局,這樣比較好控制控件的位置。同時也對控件屬性的使用有了進一步瞭解。代碼舉例如下:

要實現的效果:

代碼:

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);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章