正在封装一个库,打算封装一个BaseToolbarActivity,打算用于以后的使用,但是我在库里面的xml中设置的属性,没有效果,求教
/**
* Created by leo on 2017/6/16.
* 在需要使用带有标题(Toolbar实现)的Activity时继承此activity。使用此activity,需要主题style配合。<br/>
* 实现了对Toolbar的简单封装,以及沉浸式状态栏<br>
* 沉浸式状态栏,当Android 版本 大于4.4小于5.0时,需要指定颜色,不然默认黑色,当Android版本大于5.0时,颜色默认为主题颜色<br>
* toolbar的加载操作由BaseToolBarActivity完成,布局中不需要对其进行布局<br>
* 在复写方法时,请调用super方法
*/
public abstract class BaseToolBarActivity extends BaseActivity {
private Toolbar mToolBar;
private TextView mTextView;
private RelativeLayout rootView;
// private Unbinder mUnBinder;
// @Override
// protected void onDestroy() {
// super.onDestroy();
// mUnBinder.unbind();
// }
@Override
protected final void initView() {
// View baseView = LayoutInflater.from(this).inflate(R.layout.activity_base_title, null);
// rootView = (RelativeLayout) baseView.findViewById(R.id.rl_rootView);
// mToolBar = (Toolbar) baseView.findViewById(R.id.tb_baseToolbar);
//
// mToolBar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
// mTextView = (TextView) baseView.findViewById(R.id.tv_baseTitle);
// mTextView.setText(getTitleBarText());
// View userView = LayoutInflater.from(this).inflate(getLayoutResource(), null);
// if (userView != null) {
// RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
// layoutParams.addRule(RelativeLayout.BELOW, R.id.tb_baseToolbar);
// rootView.addView(userView, layoutParams);
// mUnBinder = ButterKnife.bind(this, userView);
// }
setContentView(R.layout.activity_base_title);
/******/
rootView = (RelativeLayout) findViewById(R.id.rl_rootView);
mToolBar = (Toolbar)findViewById(R.id.tb_baseToolbar);
mToolBar.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
mTextView = (TextView) findViewById(R.id.tv_baseTitle);
mTextView.setText(getTitleBarText());
View userView = LayoutInflater.from(this).inflate(getLayoutResource(), null);
if (userView != null) {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.addRule(RelativeLayout.BELOW, R.id.tb_baseToolbar);
rootView.addView(userView, layoutParams);
mUnBinder = ButterKnife.bind(this, userView);
}
/*****/
setSupportActionBar(mToolBar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
StatusBarCompat.compat(this);
}
/**
* 设置标题
*
* @return title的标题
*/
protected abstract String getTitleBarText();
/**
* 设置是否显示返回按钮
*
* @param show true表示设置返回按钮
*/
protected void enableBackIcon(boolean show) {
if (show) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
} else {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
mToolBar.setNavigationOnClickListener(null);
}
}
/**
* 设置标题栏颜色。状态栏会使用默认颜色
*
* @param titleBarColor 颜色
*/
protected void setTitleBarColor(@ColorInt int titleBarColor) {
this.setTitleBarColor(titleBarColor, -1);
}
/**
* 设置titleBar文字
*
* @param title 标题文字
*/
protected void setTitleBarText(String title) {
mTextView.setText(title);
}
/**
* 设置标题栏颜色,与状态栏颜色
*
* @param titleBarColor 标题栏颜色
* @param statusBarColor 状态栏颜色
*/
protected void setTitleBarColor(@ColorInt int titleBarColor, @ColorInt int statusBarColor) {
mToolBar.setBackgroundColor(titleBarColor);
StatusBarCompat.compat(this, statusBarColor);
}
/**
* 设置标题文字大小
*
* @param size 大小
*/
protected void setTitleSize(float size) {
mTextView.setTextSize(size);
}
/**
* 取得Toolbar实例。
* 取得实例用于与drawerlayout等控件结合使用,请不要取得toolbar实例后直接操作。
*
* @return toolbar
*/
protected Toolbar getToolbarInstance() {
return mToolBar;
}
/**
* 设置标题文字颜色
*
* @param titleBarColor 颜色
*/
protected void setTitleTextColor(@ColorInt int titleBarColor) {
mTextView.setTextColor(titleBarColor);
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_rootView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_baseToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/MyToolbarStyle">
<TextView
android:id="@+id/tv_baseTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#ffffff"
android:textSize="18sp" />
</android.support.v7.widget.Toolbar>
</RelativeLayout>
<style name="MyToolbarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">?actionBarSize</item>
<item name="android:textColorPrimaryInverse">@color/white</item>
<item name="android:textColorPrimary">@color/white</item>
<item name="android:actionMenuTextColor">@android:color/holo_green_light</item>
</style>
http://www.2cto.com/kf/201506/407276.html
设置主题时, theme要改成NoActionBar, 同时设置沉浸式时最好加上setFitsSystemWindows();具体可以百度一下