文章來(lái)源:【chenyk的簡(jiǎn)書(shū)】http://www.itdecent.cn/p/527dbe07fd8f
Toolbar 是 Material Design 風(fēng)格中的一個(gè)導(dǎo)航控件 ,Google 也大力推薦大家使用 Toolbar,以此來(lái)取代先前推出的 Actionbar 。Toolbar不僅包含了ActionBar最近添加的大多數(shù)特性,同時(shí)添加推出了兼容庫(kù),使得在低版本設(shè)備上也可以使用Toolbar。與 Actionbar 相比,Toolbar 明顯要靈活的多。它不像 Actionbar 一樣,一定要固定在Activity的頂部,而是可以放到界面的任意位置。除此之外,在設(shè)計(jì) Toolbar 的時(shí)候,Google也留給了開(kāi)發(fā)者很多可定制修改的屬性。
Translucent System Bar 其叫法很有歧義,叫其沉浸式狀態(tài)欄也好,半透明狀態(tài)欄也罷。怎么開(kāi)心怎么叫,在這里暫且稱(chēng)之為半透明狀態(tài)欄,畢竟目的是讓其改變顏色,改變那千年不變的黑色背景。
在Android 4.4之后便引入了半透明狀態(tài)欄的概念,此時(shí)狀態(tài)欄最頂層有一層陰影,也就是平時(shí)我們所說(shuō)的漸變效果。而在5.0以上谷歌又做了調(diào)整,不僅支持設(shè)置漸變效果,還是支持設(shè)置完全純色的效果。
Toolbar
根據(jù)google提供的api,這里主要說(shuō)下toolbar常用的一些可定制的屬性和使用方法,其效果圖如下圖所示:
兼容包支持
Toolbar的使用需要v7包的支持,需在build.gradle文件中添加如下代碼即可使用,代碼如下:
compile 'com.android.support:appcompat-v7:23.4.0'
toolbar控件添加
新建資源布局文件,添加toolbar控件。按照以往習(xí)慣,大多數(shù)app的頁(yè)面標(biāo)題內(nèi)容會(huì)設(shè)置在標(biāo)題欄的中間位置,然而toolbar控件并沒(méi)有提供相關(guān)Api設(shè)置居中的標(biāo)題,這里可以采用以下的方式添加自定義標(biāo)題。
<android.support.v7.widget.Toolbar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize">
<TextView
android:id="@+id/toolbar_title_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="自定義"
android:textColor="#ffffff"
android:textSize="18sp" />
</android.support.v7.widget.Toolbar>
注:筆者在toolbar的中間放置了一個(gè)textview,但textview的位置不是一定居中的,這取決于toolbar給予textview的位置大小。
屬性定制
1 . navigation button(導(dǎo)航欄圖標(biāo))
//設(shè)置圖標(biāo)資源
toolbar.setNavigationIcon(iconRes);
//點(diǎn)擊事件監(jiān)聽(tīng)回調(diào)
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
2 . logo icon(app logo)
toolbar.setLogo(resId);//設(shè)置圖標(biāo)資源
3 . title and subtitle(主標(biāo)題和子標(biāo)題)
toolbar.setTitle(title);//設(shè)置主標(biāo)題內(nèi)容
toolbar.setTitle(subtitle);//設(shè)置子標(biāo)題內(nèi)容
toolbar.setTitleTextColor(color);//設(shè)置主標(biāo)題字體顏色
toolbar.setSubtitleTextColor(color);//設(shè)置子標(biāo)題字體顏色
4 . action menu(動(dòng)作菜單)
//設(shè)置menu資源
toolbar.inflateMenu(R.menu.menu_main);
//右邊菜單item監(jiān)聽(tīng)回調(diào)
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_test:
ToastTool.showNativeShortToast(ToolbarActivity.this, "測(cè)試");
return true;
case R.id.menu_search:
ToastTool.showNativeShortToast(ToolbarActivity.this, "搜索");
return true;
case R.id.menu_settings:
ToastTool.showNativeShortToast(ToolbarActivity.this, "設(shè)置");
return true;
case R.id.menu_check_update:
ToastTool.showNativeShortToast(ToolbarActivity.this, "檢查更新");
return true;
case R.id.menu_about:
ToastTool.showNativeShortToast(ToolbarActivity.this, "關(guān)于");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
});
菜單資源文件menu_main.xml,定義了幾個(gè)動(dòng)作,其內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_test"
android:title="測(cè)試"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_search"
android:icon="@mipmap/tool_search"
android:title="搜索"
app:showAsAction="always" />
<item
android:id="@+id/menu_settings"
android:title="設(shè)置"
app:showAsAction="never" />
<item
android:id="@+id/menu_check_update"
android:title="檢查更新"
app:showAsAction="never" />
<item
android:id="@+id/menu_about"
android:title="關(guān)于"
app:showAsAction="never" />
</menu>
注:action menu共兩部分,一部分為操作欄,另一部分為溢出菜單。這里定義了五個(gè)item選項(xiàng),其中app:showAsAction屬性是用來(lái)指定這個(gè)item是放置在操作欄上,還是溢出菜單中。它的值主要有以下三種:
a. 當(dāng)值為“ifRoom”時(shí),如果操作欄有空間放置,則item放置在操作欄上,否則放置到溢出菜單中。 b. 當(dāng)值為“always”時(shí),item將總是放置在操作欄上。 c. 當(dāng)值為“never”時(shí),item將總是放置在溢出菜單中。
6 . 其他樣式修改
a.背景顏色
toolbar.setBackgroundColor(bgColor);//修改toolbar背景顏色
b.字體顏色和字體大小 通過(guò)style.xml資源文件自定義相關(guān)樣式,即可更改toolbar控件相關(guān)屬性,代碼如下:
<!-- toolbar主題樣式 -->
<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- menu中showAsAction設(shè)置為ifRoom和always的item項(xiàng)(即操作欄上)字體顏色 -->
<item name="actionMenuTextColor">#00ad56</item>
<!-- menu中showAsAction設(shè)置為ifRoom和always的item項(xiàng)(即操作欄上)字體大小 -->
<item name="actionMenuTextAppearance">@style/ToolbarMenuTextSize</item>
<!-- 設(shè)置標(biāo)題、menu中所有item字體顏色 -->
<item name="android:textColorPrimary">@android:color/white</item>
<!-- 設(shè)置子標(biāo)題字體顏色 -->
<!--<item name="android:textColorSecondary">#ffad56</item>-->
</style>
c.溢出菜單背景顏色、字體顏色 通過(guò)style.xml資源文件自定義相關(guān)樣式,即可更改toolbar控件相關(guān)屬性,代碼如下:
<!-- toolbar菜單中showAsAction為ifRoom的item項(xiàng)的文字尺寸 -->
<style name="ToolbarMenuTextSize" parent="@style/TextAppearance.AppCompat.Menu">
<item name="android:textSize">16sp</item>
</style>
<!-- toolbar標(biāo)題字體樣式 -->
<style name="ToolbarTitleStyle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textSize">16sp</item>
</style>
<!-- toolbar彈出菜單樣式 -->
<style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat">
<item name="android:colorBackground">#ffffaa</item>
<item name="android:textColor">#fa4081</item>
<item name="android:textSize">20sp</item>
</style>
注:其使用方式為,在toolbar布局中添加如下代碼即可,不過(guò)需要注意的是,還需要再根布局中添加代碼xmlns:app="http://schemas.android.com/apk/res-auto"
以下代碼設(shè)置才會(huì)生效。
app:popupTheme="@style/ToolbarPopupTheme" app:subtitleTextAppearance="@style/ToolbarTitleStyle" app:theme="@style/ToolbarTheme" app:titleTextAppearance="@style/ToolbarTitleStyle"
Translucent System Bar
不同版本具有的特點(diǎn)
關(guān)于半透明狀態(tài)欄,在不用的Android版本之間也有著不同的效果。其特點(diǎn)如下所示:
1 . Android 4.4以下不支持半透明狀態(tài)欄效果 2 . Android 4.4以上5.0以下(不包括5.0)可使?fàn)顟B(tài)欄變色,效果為顏色漸變,可設(shè)置透明度 3 . Android5.0以上可使?fàn)顟B(tài)欄變色,即可設(shè)置漸變效果,亦可讓其顯示純色效果,同時(shí)支持透明度設(shè)置
Android 5.0以上效果圖
下面看下動(dòng)圖的效果,如下所示:
代碼實(shí)現(xiàn)
1 . 新建狀態(tài)欄管理類(lèi)StatusBarManager,定義枚舉類(lèi)型TintType,編寫(xiě)帶四參數(shù)的構(gòu)造方法,同時(shí)根據(jù)Andorid版本的不同對(duì)窗口進(jìn)行配置
public enum TintType {
GRADIENT, PURECOLOR //漸變,純色 ps:純色效果僅適用于android 5.0以上
}
/**
* 構(gòu)造函數(shù)
* @param activity
* @param tintType
* @param alpha
* @param statusBarColor
*/
private StatusBarManager(Activity activity, TintType tintType, int alpha, int statusBarColor) {
this.mActivity = activity;
this.mTintType = tintType;
this.mAlpha = alpha;
this.mStatusBarColor = CommTool.getResultColor(mActivity, statusBarColor);
windowConfig();
}
/**
* 窗口相關(guān)配置
*/
private void windowConfig() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//透明狀態(tài)欄
if (TintType.PURECOLOR == mTintType) {
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
mActivity.getWindow().setStatusBarColor(CommTool.calculateColorWithAlpha(mStatusBarColor, mAlpha));//設(shè)置狀態(tài)欄顏色
} else if (TintType.GRADIENT == mTintType) {
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
addStatusBarView(mActivity, CommTool.calculateColorWithAlpha(mStatusBarColor, mAlpha));
}
//透明底部導(dǎo)航欄
// activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
addStatusBarView(mActivity, CommTool.calculateColorWithAlpha(mStatusBarColor, mAlpha));
}
}
注:4.4以上需要自己繪制一個(gè)與狀態(tài)欄同高的矩形條,并通過(guò)addview的方法添加至屏幕上,同時(shí)設(shè)置其背景顏色達(dá)到預(yù)期的效果。而5.0以上api中提供了setStatusBarColor(int color)的方法可直接設(shè)置狀態(tài)的顏色。
2 . 新建StatusBarView視圖類(lèi),主要生成一個(gè)與狀態(tài)欄同等大小的視圖并添加至頂部和顏色的設(shè)置,代碼如下:
/**
* 生成一個(gè)和狀態(tài)欄大小相同的矩形條
*
* @return 狀態(tài)欄矩形條
*/
private static StatusBarView createStatusBarView(Activity activity, int color) {
StatusBarView statusBarView = new StatusBarView(activity);
statusBarView.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, CommTool.getStatusBarHeight(activity)));
statusBarView.setBackgroundColor(color);
return statusBarView;
}
/**
* 添加狀態(tài)欄
*
* @param activity
* @param color
*/
public static void addStatusBarView(Activity activity, int color) {
ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
if (decorView.getChildAt(0) instanceof StatusBarView) {
decorView.getChildAt(0).setBackgroundColor(color);
} else {
StatusBarView statusView = createStatusBarView(activity, color);
decorView.addView(statusView);
}
}
3 . 定義builder配置內(nèi)部類(lèi),根據(jù)實(shí)際情況對(duì)狀態(tài)欄屬性進(jìn)行自由組裝,代碼如下:
/**
* builder配置類(lèi)
*/
public static class builder {
private static final int DEFAULT_ALPHA = 60; //默認(rèn)透明度數(shù)值
private Activity activity;
private TintType tintType = TintType.PURECOLOR; //默認(rèn)純色效果
private int alpha = DEFAULT_ALPHA;
private int statusBarColor;
/**
* 構(gòu)造方法
*
* @param activity
*/
public builder(Activity activity) {
this.activity = activity;
}
/**
* 設(shè)置色彩類(lèi)型
*
* @param tintType
* @return
*/
public builder setTintType(TintType tintType) {
this.tintType = tintType;
return this;
}
/**
* 設(shè)置透明度
*
* @param alpha
* @return
*/
public builder setAlpha(int alpha) {
if (alpha >= 0 & alpha <= 255)
this.alpha = alpha;
return this;
}
/**
* 設(shè)置狀態(tài)欄背景顏色
*
* @param StatusBarColor
* @return
*/
public builder setStatusBarColor(int StatusBarColor) {
this.statusBarColor = StatusBarColor;
return this;
}
/**
* 創(chuàng)建StatusBarManager對(duì)象并返回
*
* @return
*/
public StatusBarManager create() {
return new StatusBarManager(activity, tintType, alpha, statusBarColor);
}
}
最后通過(guò)鏈?zhǔn)秸{(diào)用的方式自由組裝配置,支持純色和漸變效果設(shè)置、支持設(shè)置透明度等,調(diào)用方式如下代碼所示:
new StatusBarManager.builder(this)
.setStatusBarColor(mStatusBarColor)//狀態(tài)欄顏色
.setTintType(mTintType)//色彩類(lèi)型:純色、漸變
.setAlpha(mAlpha)//不透明度
.create();
注:最終效果展示時(shí),會(huì)發(fā)現(xiàn)布局內(nèi)容已浸入到狀態(tài)欄中,這是個(gè)需要注意的地方,我們只需在布局文件的根布局中添加android:fitsSystemWindows="true"
即可。當(dāng)然如果把圖片當(dāng)背景的話,可將其設(shè)置為false,這個(gè)視情況而定。
關(guān)于toolbar和Translucent System Bar就介紹到這里,下面是將兩者進(jìn)行配套使用,并進(jìn)行了封裝,以便在以后的開(kāi)發(fā)過(guò)程中快速調(diào)用。
1 . 新建base_activity_layout.xml資源布局文件,頁(yè)面由toolbar和正文內(nèi)容兩部分組成,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/base_ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ToolbarPopupTheme"
app:subtitleTextAppearance="@style/ToolbarTitleStyle"
app:theme="@style/ToolbarTheme"
app:titleTextAppearance="@style/ToolbarTitleStyle">
<TextView
android:id="@+id/toolbar_title_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="自定義"
android:textColor="#ffffff"
android:textSize="18sp" />
</android.support.v7.widget.Toolbar>
<FrameLayout
android:id="@+id/base_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#ffffff" />
</LinearLayout>
2 . 新建基類(lèi)BaseActivtiy,主要提供的功能有:
a . Navigation Button監(jiān)聽(tīng)回調(diào),這里默認(rèn)操作為返回并銷(xiāo)毀當(dāng)前頁(yè)面。如需定義其他操作,則callbackOnClickNavigationAction(View v)方法即可
//左邊Navigation Button監(jiān)聽(tīng)回調(diào)
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callbackOnClickNavigationAction(v);
}
});
/**
* Navigation Button點(diǎn)擊回調(diào),默認(rèn)回退銷(xiāo)毀頁(yè)面,其他操作子類(lèi)可重寫(xiě)
*
* @param view
*/
protected void callbackOnClickNavigationAction(View view) {
onBackPressed();
}
b . Action menu布局添加以及監(jiān)聽(tīng)回調(diào),默認(rèn)無(wú)menu選項(xiàng)
//右邊菜單item監(jiān)聽(tīng)回調(diào)
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return callbackOnMenuAction(item);
}
});
/**
* menu點(diǎn)擊回調(diào),默認(rèn)無(wú),子類(lèi)可重寫(xiě)
*
* @param item
* @return
*/
protected boolean callbackOnMenuAction(MenuItem item) {
return false;
}
/**
* 為toolbar設(shè)置menu項(xiàng)
*/
private void setInflateMenu() {
if (getMenuLayoutId() > 0)
toolbar.inflateMenu(getMenuLayoutId());
}
c . 各種set操作,如標(biāo)題、子標(biāo)題、自定義標(biāo)題字體顏色設(shè)置、圖標(biāo)設(shè)置、menu布局設(shè)置等
/**
* 為toolbar設(shè)置menu項(xiàng)
*/
private void setInflateMenu() {
if (getMenuLayoutId() > 0)
toolbar.inflateMenu(getMenuLayoutId());
}
/**
* 設(shè)置主標(biāo)題
*
* @param object
*/
public void setMainTitle(Object object) {
toolbar.setTitle(CommTool.getResultString(this, object));
}
/**
* 設(shè)置子類(lèi)標(biāo)題
*
* @param object
*/
public void setSubTitle(Object object) {
toolbar.setSubtitle(CommTool.getResultString(this, object));
}
/**
* 設(shè)置主標(biāo)題字體顏色
*
* @param object
*/
public void setMainTitleColor(Object object) {
toolbar.setTitleTextColor(CommTool.getResultColor(this, object));
}
/**
* 設(shè)置子標(biāo)題字體顏色
*
* @param object
*/
public void setSubTitleColor(Object object) {
toolbar.setSubtitleTextColor(CommTool.getResultColor(this, object));
}
/**
* 設(shè)置logoIcon
*
* @param resId
*/
public void setLogoIcon(int resId) {
toolbar.setLogo(resId);
}
/**
* 設(shè)置中間標(biāo)題
*
* @param object
*/
public void setToolbarTitleTv(Object object) {
toolbarTitleTv.setText(CommTool.getResultString(this, object));
}
/**
* 設(shè)置標(biāo)題欄背景顏色
*
* @param color
*/
protected void setTitleBgColor(int color) {
toolbar.setBackgroundColor(CommTool.getResultColor(this, color));
//狀態(tài)欄背景相關(guān)配置
new StatusBarManager.builder(this)
.setStatusBarColor(color)
.create();
}
/**
* 設(shè)置左邊標(biāo)題圖標(biāo)
*
* @param iconRes
*/
public void setTitleNavigationIcon(int iconRes) {
toolbar.setNavigationIcon(iconRes);
}
d . 根據(jù)實(shí)際情況隱藏toolbar、獲取toolbar控件設(shè)置屬性
/**
* 隱藏標(biāo)題欄
*/
protected void hideToolbar() {
if (toolbar.getVisibility() == View.VISIBLE)
toolbar.setVisibility(View.GONE);
}
/**
* 獲取toolbar
*
* @return
*/
public Toolbar getToolbar() {
return toolbar;
}
3 . 調(diào)用方法
a . 子類(lèi)繼承BaseActivity基類(lèi),實(shí)現(xiàn)抽象方法getContentViewID()和initViews() b . 根據(jù)實(shí)際情況設(shè)置相關(guān)屬性,如標(biāo)題、導(dǎo)航圖標(biāo)等 c . 如果需要設(shè)置action menu,則重寫(xiě)方法getMenuLayoutId()返回menu布局即可,item點(diǎn)擊回調(diào),只要重寫(xiě)方法callbackOnMenuAction(MenuItem item)并返回true值即可。 d . 透明狀態(tài)欄默認(rèn)純色半透明,如需修改可通過(guò)setTitleBgColor(int color)修改,或者調(diào)用狀態(tài)欄管理類(lèi),通過(guò)鏈試調(diào)用的方式對(duì)狀態(tài)欄進(jìn)行配置
BaseActivity完整代碼
/**
* Created by chenyk on 2016/6/25.
* 頁(yè)面基類(lèi)
* 默認(rèn):顯示toolbar,標(biāo)題居中,Navigation Button點(diǎn)擊返回銷(xiāo)毀當(dāng)前頁(yè)面,無(wú)menu菜單(可自行定義)
*/
public abstract class BaseActivity extends AppCompatActivity {
private FrameLayout baseContent;
private Toolbar toolbar;
private TextView toolbarTitleTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.base_activity_layout);
initControlViews();
}
/**
* 控件初始化操作
*/
private void initControlViews() {
baseContent = (FrameLayout) findViewById(R.id.base_content);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbarTitleTv = (TextView) findViewById(R.id.toolbar_title_tv);
//設(shè)置相關(guān)默認(rèn)操作
setTitleNavigationIcon(R.mipmap.icon_title_back);
setTitleBgColor(R.color.base_title_color);
setInflateMenu();
baseContent.addView(LinearLayout.inflate(this, getContentViewID(), null));
initViews();
//左邊Navigation Button監(jiān)聽(tīng)回調(diào)
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callbackOnClickNavigationAction(v);
}
});
//右邊菜單item監(jiān)聽(tīng)回調(diào)
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return callbackOnMenuAction(item);
}
});
}
/**
* 為toolbar設(shè)置menu項(xiàng)
*/
private void setInflateMenu() {
if (getMenuLayoutId() > 0)
toolbar.inflateMenu(getMenuLayoutId());
}
/**
* 獲取菜單資源id,默認(rèn)無(wú),子類(lèi)可重寫(xiě)
*
* @return
*/
protected int getMenuLayoutId() {
return 0;
}
/**
* 獲取toolbar
*
* @return
*/
public Toolbar getToolbar() {
return toolbar;
}
/**
* 設(shè)置主標(biāo)題
*
* @param object
*/
public void setMainTitle(Object object) {
toolbar.setTitle(CommTool.getResultString(this, object));
}
/**
* 設(shè)置子類(lèi)標(biāo)題
*
* @param object
*/
public void setSubTitle(Object object) {
toolbar.setSubtitle(CommTool.getResultString(this, object));
}
/**
* 設(shè)置主標(biāo)題字體顏色
*
* @param object
*/
public void setMainTitleColor(Object object) {
toolbar.setTitleTextColor(CommTool.getResultColor(this, object));
}
/**
* 設(shè)置子標(biāo)題字體顏色
*
* @param object
*/
public void setSubTitleColor(Object object) {
toolbar.setSubtitleTextColor(CommTool.getResultColor(this, object));
}
/**
* 設(shè)置logoIcon
*
* @param resId
*/
public void setLogoIcon(int resId) {
toolbar.setLogo(resId);
}
/**
* 設(shè)置中間標(biāo)題
*
* @param object
*/
public void setToolbarTitleTv(Object object) {
toolbarTitleTv.setText(CommTool.getResultString(this, object));
}
/**
* 設(shè)置標(biāo)題欄背景顏色
*
* @param color
*/
protected void setTitleBgColor(int color) {
toolbar.setBackgroundColor(CommTool.getResultColor(this, color));
//狀態(tài)欄背景相關(guān)配置
new StatusBarManager.builder(this)
.setStatusBarColor(color)
.create();
}
/**
* 設(shè)置左邊標(biāo)題圖標(biāo)
*
* @param iconRes
*/
public void setTitleNavigationIcon(int iconRes) {
toolbar.setNavigationIcon(iconRes);
}
/**
* 隱藏標(biāo)題欄
*/
protected void hideToolbar() {
if (toolbar.getVisibility() == View.VISIBLE)
toolbar.setVisibility(View.GONE);
}
/**
* 不顯示 NavigationButton
*/
public void hideTitleNavigationButton() {
toolbar.setNavigationIcon(null);
}
/**
* Navigation Button點(diǎn)擊回調(diào),默認(rèn)回退銷(xiāo)毀頁(yè)面,其他操作子類(lèi)可重寫(xiě)
*
* @param view
*/
protected void callbackOnClickNavigationAction(View view) {
onBackPressed();
}
/**
* menu點(diǎn)擊回調(diào),默認(rèn)無(wú),子類(lèi)可重寫(xiě)
*
* @param item
* @return
*/
protected boolean callbackOnMenuAction(MenuItem item) {
return false;
}
/**
* 獲取布局資源ID
*
* @return
*/
public abstract int getContentViewID();
/**
* 控件初始化操作
*
* @return
*/
public abstract void initViews();
}