实现步骤:
1.新建NavigationBar类
package com.example.custombar;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
public class NavigationBar extends FrameLayout {
private Button leftButton;
private TextView titleText;
public NavigationBar(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
titleText = (TextView) findViewById(R.id.title_text);
leftButton = (Button) findViewById(R.id.button_left);
leftButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Activity) getContext()).finish();
}
});
}
public void setTitleText(String text) {
titleText.setText(text);
}
public void setLeftButtonText(String text) {
leftButton.setText(text);
}
public void setLeftButtonListener(OnClickListener l) {
leftButton.setOnClickListener(l);
}
}
2.新建title.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/android_title_bg" >
<Button
android:id="@+id/button_left"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="@drawable/title_btn_back"
android:textColor="#fff"
android:textSize="14sp"
android:text="返回" />
<TextView
android:id="@+id/title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginTop="8.0dip"
android:gravity="center"
android:lineSpacingExtra="6.0dp"
android:paddingTop="10.0dp"
android:singleLine="true"
android:text="文章标题"
android:textColor="#fff"
android:textSize="20.0sp" />
</RelativeLayout>
3.在主activity_main.xml编写
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#eee">
<com.example.custombar.NavigationBar
android:id="@+id/title_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.example.custombar.NavigationBar>
</RelativeLayout>
即可应用自定义的title.xml
如图:这里的返回按钮默认事件是退出
((Activity) getContext()).finish();
如我们想改变标题文字或是返回按钮的事件,可以实例化一个NavigationBar,重写即可。
例如:
NavigationBar txt = (NavigationBar) this.findViewById(R.id.title_view);
title = (TextView) txt.findViewById(R.id.title_text);
title.setText("新年快乐!");
btnBack = (Button) txt.findViewById(R.id.button_left);
btnBack.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(MainActivity.this, "码到功成!", Toast.LENGTH_LONG)
.show();
}
});
如图: