效果图
Java代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
/** * 首页标题栏 * * @author ouyezi */ public class CommonTitleBar extends RelativeLayout { // 防重复点击时间 private static final int BTN_LIMIT_TIME = 500; private TextView leftButton; private ImageView leftButtonImg; private TextView middleButton; private TextView rightButton; private ImageView rightButtonImg; private int leftBtnIconId; private String leftBtnStr; private String titleTxtStr; private String rightBtnStr; private int rightBtnIconId; public CommonTitleBar(Context context) { super(context); } public CommonTitleBar(Context context, AttributeSet attrs) { super(context, attrs); TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.CommonTitleBar); // 如果后续有文字按钮,可使用该模式设置 leftBtnStr = arr.getString(R.styleable.CommonTitleBar_leftBtnTxt); leftBtnIconId = arr.getResourceId(R.styleable.CommonTitleBar_leftBtnIcon, 0); titleTxtStr = arr.getString(R.styleable.CommonTitleBar_titleTxt); rightBtnStr = arr.getString(R.styleable.CommonTitleBar_rightBtnTxt); rightBtnIconId = arr.getResourceId(R.styleable.CommonTitleBar_rightBtnIcon, 0); if (isInEditMode()) { LayoutInflater.from(context).inflate(R.layout.view_title_bar, this); return; } LayoutInflater.from(context).inflate(R.layout.view_title_bar, this); findViewById(R.id.title_out_frame).setBackgroundResource(R.color.blue); arr.recycle(); } protected void onFinishInflate() { if (isInEditMode()) { return; } leftButtonImg = (ImageView) findViewById(R.id.title_left_btn); leftButton = (TextView) findViewById(R.id.title_left); middleButton = (TextView) findViewById(R.id.title_middle); rightButtonImg = (ImageView) findViewById(R.id.title_right_btn); rightButton = (TextView) findViewById(R.id.title_right); if (leftBtnIconId != 0) { leftButtonImg.setImageResource(leftBtnIconId); leftButtonImg.setVisibility(View.VISIBLE); } else { leftButtonImg.setVisibility(View.GONE); } if (rightBtnIconId != 0) { rightButtonImg.setImageResource(rightBtnIconId); rightButtonImg.setVisibility(View.VISIBLE); } else { rightButtonImg.setVisibility(View.GONE); } setLeftTxtBtn(leftBtnStr); setTitleTxt(titleTxtStr); setRightTxtBtn(rightBtnStr); } public void setRightTxtBtn(String btnTxt) { if (!TextUtils.isEmpty(btnTxt)) { rightButton.setText(btnTxt); rightButton.setVisibility(View.VISIBLE); } else { rightButton.setVisibility(View.GONE); } } public void setLeftTxtBtn(String leftBtnStr) { if (!TextUtils.isEmpty(leftBtnStr)) { leftButton.setText(leftBtnStr); leftButton.setVisibility(View.VISIBLE); } else { leftButton.setVisibility(View.GONE); } } public void setTitleTxt(String title) { if (!TextUtils.isEmpty(title)) { middleButton.setText(title); middleButton.setVisibility(View.VISIBLE); } else { middleButton.setVisibility(View.GONE); } } public void hideLeftBtn() { leftButton.setVisibility(View.GONE); leftButtonImg.setVisibility(View.GONE); findViewById(R.id.title_left_area).setOnClickListener(null); } public void hideRightBtn() { rightButton.setVisibility(View.GONE); rightButtonImg.setVisibility(View.GONE); findViewById(R.id.title_right_area).setOnClickListener(null); } public void setLeftBtnOnclickListener(OnClickListener listener) { OnClickListener myListener = new GlobalLimitClickOnClickListener(listener, BTN_LIMIT_TIME); findViewById(R.id.title_left_area).setOnClickListener(myListener); } public void setRightBtnOnclickListener(OnClickListener listener) { OnClickListener myListener = new GlobalLimitClickOnClickListener(listener, BTN_LIMIT_TIME); findViewById(R.id.title_right_area).setOnClickListener(myListener); } } |
Layout布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/title_out_frame" android:layout_width="fill_parent" android:layout_height="@dimen/height_100px" android:gravity="center_vertical" android:background="@color/pink"> <LinearLayout android:id="@+id/title_left_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:gravity="center_vertical" android:orientation="horizontal" android:paddingLeft="@dimen/margin_20px" android:paddingRight="@dimen/margin_20px" > <ImageView android:id="@+id/title_left_btn" android:layout_width="wrap_content" android:layout_height="@dimen/height_60px" android:layout_marginRight="@dimen/margin_18px" android:src="@drawable/back" /> <TextView android:id="@+id/title_left" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textColor="@color/white" android:textSize="@dimen/txt_size_32px" android:visibility="gone" /> </LinearLayout> <TextView android:id="@+id/title_middle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginRight="@dimen/margin_20px" android:layout_marginTop="@dimen/margin_20px" android:gravity="center" android:text="贴纸相机" android:textColor="@color/white" android:textSize="@dimen/txt_size_36px" /> <LinearLayout android:id="@+id/title_right_area" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:gravity="center_vertical" android:orientation="horizontal" android:paddingLeft="@dimen/margin_20px" android:paddingRight="@dimen/margin_20px" > <TextView android:id="@+id/title_right" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="@dimen/txt_size_32px" android:layout_marginRight="@dimen/margin_18px" android:visibility="gone" /> <ImageView android:id="@+id/title_right_btn" android:layout_width="wrap_content" android:layout_height="@dimen/height_60px" android:src="@drawable/next" /> </LinearLayout> </RelativeLayout> |
attrs
1 2 3 4 5 6 7 8 9 10 11 |
<declare-styleable name="CommonTitleBar"> <attr name="baseStyle"> <enum name="normal" value="0" /> <enum name="white" value="1" /> </attr> <attr name="leftBtnIcon" format="reference" /> <attr name="leftBtnTxt" format="string|reference" /> <attr name="titleTxt" format="string|reference" /> <attr name="rightBtnTxt" format="string|reference" /> <attr name="rightBtnIcon" format="reference" /> </declare-styleable> |
未经允许不得转载:Python在线学习 » Andorid自定义TtitleLayoutView