先来看看布局吧 :
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/backround" android:layout_width="match_parent" android:layout_height="64dp" android:background="#f00"> <LinearLayout android:id="@+id/rel_back" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerVertical="true" android:layout_marginLeft="15dp" android:minWidth="80dp" android:orientation="horizontal"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" /> <TextView android:id="@+id/left_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:textColor="#fff" android:textSize="14sp" /> </LinearLayout> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textColor="#fff" android:textSize="16sp" /> <RelativeLayout android:id="@+id/rel_setting" android:layout_width="80dp" android:layout_height="match_parent" android:layout_alignParentRight="true" android:visibility="gone"> <ImageView android:id="@+id/right_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="30dp" android:src="@mipmap/icon_tab_home_n" android:visibility="gone" /> <TextView android:id="@+id/right_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="30dp" android:gravity="right" android:text="设置" android:textColor="#fff" android:textSize="14sp" /> </RelativeLayout> <RelativeLayout android:id="@+id/rel_rightmiddle" android:layout_width="80dp" android:layout_height="match_parent" android:layout_toLeftOf="@+id/rel_setting" android:gravity="right" android:visibility="gone"> <ImageView android:id="@+id/right1_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:src="@mipmap/icon_tab_home_n" /> <TextView android:id="@+id/right1_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:gravity="right" android:text="哈哈" android:textColor="#fff" android:textSize="14sp" android:visibility="gone" /> </RelativeLayout> </RelativeLayout>
接下来就是代码: package com.example.myapplication.ui; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.example.myapplication.R; import org.w3c.dom.Text; /** * Created by 徐嘉健 on 2018/11/21. */ public class TitleBar extends RelativeLayout { private ImageView icon; private RelativeLayout backround; private TextView left_tv; private TextView title; private ImageView right_icon; private LinearLayout rel_back; private RelativeLayout rel_setting; private RelativeLayout rel_rightmiddle; private TextView right_tv; private ImageView right1_icon; private TextView right1_tv; public TitleBar(Context context) { super(context); } public TitleBar(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.view_title_layout, this); backround = findViewById(R.id.backround); rel_back = findViewById(R.id.rel_back); icon = findViewById(R.id.icon); left_tv = findViewById(R.id.left_tv); title = findViewById(R.id.title); right_icon = findViewById(R.id.right_icon); rel_setting = findViewById(R.id.rel_setting); rel_rightmiddle = findViewById(R.id.rel_rightmiddle); right_tv = findViewById(R.id.right_tv); right1_icon = findViewById(R.id.right1_icon); right1_tv = findViewById(R.id.right1_tv); } /** * 左侧Rel接口回掉 * * @param listener */ public void setLeftClickListener(OnClickListener listener) { rel_back.setOnClickListener(listener); } /** * 中间Rel接口回掉 * * @param listener */ public void setMiddleTileClickListener(OnClickListener listener) { title.setOnClickListener(listener); } /** * 右侧Rel接口回掉 * * @param listener */ public void setRightTilteClickListener(OnClickListener listener) { rel_setting.setOnClickListener(listener); } /** * 右中册接口 */ public void setRightMiddleClickListener(OnClickListener listener) { rel_rightmiddle.setOnClickListener(listener); } /** * 设置背景颜色 */ public void setBackround(int color) { backround.setBackgroundColor(color); } /** * 左侧的图片 * * @param image */ public void setLeftImage(int image) { icon.setImageResource(image); } /** * 左侧的文字 * * @param str */ public void setLeftText(String str) { left_tv.setText(str); } /** * 左侧的文字颜色 */ public void setLeftTextColor(int color) { left_tv.setTextColor(color); } /** * 左侧的文字大小 */ public void setLeftTextSize(int size) { left_tv.setTextSize(size); } /** * 中间标题的文字 */ public void setMiddleText(String msg) { title.setText(msg); } /** * 中间标题的文字颜色 */ public void setMiddleTextColor(int color) { title.setTextColor(color); } /** * 中间标题的文字大小 */ public void setMiddleTextSize(int size) { title.setTextSize(size); } /** * 设置右侧图片 */ public void setRightImage(int img) { right_icon.setImageResource(img); right_tv.setVisibility(GONE); right_icon.setVisibility(VISIBLE); } /** * 右侧文字 */ public void setRightTv(String str) { right_tv.setText(str); right_tv.setVisibility(VISIBLE); right_icon.setVisibility(GONE); } /** * 右侧文字大小 */ public void setRightTvSize(int Size) { right_tv.setTextSize(Size); } /** * 右侧文字颜色 */ public void setRightTvColor(int color) { right_tv.setTextColor(color); } /** * 右中侧图片 */ public void setRightMiddleImag(int img) { right1_icon.setImageResource(img); right1_icon.setVisibility(VISIBLE); right1_tv.setVisibility(GONE); } /** * 右中侧文字 */ public void setRightMiddleTv(String str) { right1_tv.setText(str); right1_icon.setVisibility(GONE); right1_tv.setVisibility(VISIBLE); } /** * 右中侧文字大小 */ public void setRightMiddleTvSize(int size) { right1_tv.setTextSize(size); } /** * 右中侧文字颜色 */ public void setRightMiddleTvColor(int color) { right1_tv.setTextColor(color); } /** * 右侧布局显示 */ public void setRightVisible() { rel_setting.setVisibility(VISIBLE); } /** * 右中侧显示 */ public void setRightMiddleVisible() { rel_rightmiddle.setVisibility(VISIBLE); } }