我们要给界面添加自己标题栏,就得先把系统存在的标题栏隐藏掉,找到values文件夹下的styles.xml,在其中添加
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
然后在需要隐藏的activity中,引用这个主题即可
android:theme="@style/AppTheme.NoActionBar"
新建一个title_toolbar.xml的标题栏布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="58dp">
<TextView
android:id="@+id/tv_centent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="fdsfsd"
android:gravity="center"
android:layout_centerInParent="true"
android:textSize="25sp"
android:textColor="#000"/>
<ImageView
android:id="@+id/iv_right"
android:layout_width="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_alignParentRight="true"
android:layout_height="match_parent" />
</RelativeLayout>
TextView四中间的标题名称,ImageView是右边变的按钮,接下来新建一个Toolbar的派生类。
public class TitleToolbar extends Toolbar {
/**
* toolbar布局
*/
View view;
/**
* 中心标题
*/
TextView tvCentent;
/**
* 右边按钮
*/
ImageView ivRight;
public TitleToolbar(Context context) {
super(context);
init(context);
}
public TitleToolbar(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public TitleToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
/**
* 初始化toolbar布局
*
* @param context
*/
private void init(Context context) {
view = LayoutInflater.from(context).inflate(R.layout.title_toolbar, null);
LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT
, ViewGroup.LayoutParams.WRAP_CONTENT);
addView(view, params);
tvCentent= (TextView) view.findViewById(R.id.tv_centent);
ivRight= (ImageView) view.findViewById(R.id.iv_right);
setContentInsetsRelative(0, 0);
}
/**
* 设置标题
* @param text
*/
public void setTvCentent(CharSequence text){
if (text==null)
return;
tvCentent.setText(text);
}
/**
* 设置左边按钮
* @param resId 使用本地资源文件
*/
public void setLeftButton(@DrawableRes int resId){
setNavigationIcon(resId);
}
/**
* 设置左边按钮的点击事件
* @param listener
*/
public void setLeftButtonOnClickListener(OnClickListener listener){
setNavigationOnClickListener(listener);
}
/**
* 设置右边按钮
* @param resId 使用本地资源文件
*/
public void setRightButton(@DrawableRes int resId){
ivRight.setImageResource(resId);
}
/**
* 设置右边按钮的点击事件
* @param listener
*/
public void setRightButtonOnClickListtener(OnClickListener listener){
ivRight.setOnClickListener(listener);
}
}
d在Activity中使用方法很简单,在该界面的xml布局中国引用自定义的TitleToolbar控件,
<你的包名.TitleToolbar
android:id="@+id/toolbar"
android:background="@color/colorAccent"
android:layout_width="match_parent"
android:layout_height="58dp"
/>
//在Activity中的到这个控件,
setSupportActionBar(toolbar);
//设置左边的图标
toolbar.setLeftButton(R.mipmap.ic_launcher);