创建资源文件
<declare-styleable name="TopBar">
<attr name="leftBackGroud" format="reference"></attr>
<attr name="rightBackGroud" format="reference"></attr>
<attr name="titleText" format="string"></attr>
<attr name="titleTextColor" format="color"></attr>
<attr name="titleTextSize" format="dimension"></attr>
</declare-styleable>
topbar布局
<Button
android:id="@+id/leftButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp" />
<TextView
android:id="@+id/titleText"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:gravity="center" />
<Button
android:id="@+id/rightButton"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="5dp" />
ToBar类
public class TopBar extends RelativeLayout {
private TextView titleTextView;
private Button leftButton;
private Button rightButton;
private TypedArray typedArray;
private LeftAndRightBtn listener;
public TopBar(Context context) {
super(context);
}
public void setBtnListener(LeftAndRightBtn listener){
this.listener = listener;
}
public interface LeftAndRightBtn{
void leftBtnLisener();
void rightBtnLisener();
}
//设置左边按钮的可见性
public void setLeftButton(boolean flag){
if (flag){
leftButton.setVisibility(View.VISIBLE);
}else{
leftButton.setVisibility(View.GONE);
}
}
//设置左边按钮的可见性
public void setRightButton(boolean flag){
if (flag){
rightButton.setVisibility(View.VISIBLE);
}else{
rightButton.setVisibility(View.GONE);
}
}
public TopBar(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.topbar_layout, this);
leftButton = findViewById(R.id.leftButton);
titleTextView = findViewById(R.id.titleText);
rightButton = findViewById(R.id.rightButton);
leftButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (listener!=null){
listener.leftBtnLisener();
}
}
});
rightButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (listener!=null){
listener.rightBtnLisener();
}
}
});
typedArray = context.obtainStyledAttributes(attrs, R.styleable.NiuHTopBar);
int leftBackGroud = typedArray.getResourceId(R.styleable.NiuHTopBar_leftBackGroud, 0);
int rightBackGroud = typedArray.getResourceId(R.styleable.NiuHTopBar_rightBackGroud, 0);
String titleText = typedArray.getString(R.styleable.NiuHTopBar_titleText);
int titleTextColor = typedArray.getColor(R.styleable.NiuHTopBar_titleTextColor, 0);
int titleTextSize = typedArray.getDimensionPixelSize(R.styleable.NiuHTopBar_titleTextSize, 0);
typedArray.recycle();
leftButton.setBackgroundResource(leftBackGroud);
rightButton.setBackgroundResource(rightBackGroud);
titleTextView.setText(titleText);
titleTextView.setTextColor(titleTextColor);
titleTextView.setTextSize(titleTextSize);
}
public TopBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public TopBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
类布局
<com.example.skr.week2_20190105.view.TopBar
android:id="@+id/topbar"
android:layout_width="wrap_content"
android:layout_height="60dp"
app:leftBackGroud="@drawable/back"
app:rightBackGroud="@drawable/right"
app:titleText="首页"
app:titleTextColor="#0f0"
app:titleTextSize="18sp">
</com.example.skr.week2_20190105.view.TopBar>