android 复用标题栏,Android基础---使用ToolBar教你打造一个通用的标题栏
現(xiàn)在項(xiàng)目中一般都會(huì)使用標(biāo)題欄,谷歌在2014年推出了新的app bar---ToolBar,代替了以前使用的ActionBar。在做項(xiàng)目中會(huì)經(jīng)常用到這個(gè)ToolBar,雖然用的很多,但是自己對(duì)它如何用還不是很明白,今天就來(lái)簡(jiǎn)單的學(xué)習(xí)下這個(gè)控件的使用。
效果圖
效果圖
1. 修改app的style
我們?nèi)绻褂肨oolBar,需要先把原來(lái)的ActionBar隱藏起來(lái),就先要設(shè)置App的主題為Theme.AppCompat.Light.NoActionBar這種主題,就需要在values/style.xml里面修改Apptheme
的Parent或者parent的parent為Theme.AppCompat.Light.NoActionBar,這樣的話才能使用ToolBar得到我們想要的效果。
2. 在布局中使用ToolBar達(dá)到效果圖
1.標(biāo)題
首先在布局文件activity_main.xml中:
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#ffffff"
android:gravity="center"
app:titleTextColor="#1d1d1d">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="工作"
android:textColor="#1d1d1d"
android:textSize="16sp" />
需要說(shuō)明的是,ToolBar其實(shí)也是一個(gè)ViewGroup,他的布局和LinearLayout類似,所以在使用的過(guò)程中,可以使用android:layout_gravity="center"來(lái)讓TextView居中顯示
這個(gè)時(shí)候的標(biāo)題欄是這樣的:
標(biāo)題欄-無(wú)返回箭頭-無(wú)右側(cè)按鈕
2. 右側(cè)按鈕
標(biāo)題欄已經(jīng)居中顯示了,但是我們可能還需要在右側(cè)需要一個(gè)按鈕來(lái)進(jìn)行一定的操作,比如下面的按鈕操作
標(biāo)題欄-無(wú)返回箭頭
這個(gè)怎么實(shí)現(xiàn)呢,看下面的代碼:
第一種實(shí)現(xiàn)
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#ffffff"
android:gravity="center"
app:titleTextColor="#1d1d1d">
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:text="工作"
android:textColor="#1d1d1d"
android:textSize="16sp" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentRight="true"
android:layout_marginRight="12dp"
android:text="按鈕"
android:textColor="#1d1d1d"
android:textSize="14sp" />
這里在ToolBar的自定義區(qū)放入了一個(gè)RelativeLayout,在RelativeLayout里面放置了一個(gè)標(biāo)題和右側(cè)的按鈕,右側(cè)的按鈕是可以隨意定制的,
第二種實(shí)現(xiàn)
我們可以利用菜單選項(xiàng)menu來(lái)實(shí)現(xiàn)這種效果,
首先在res目錄下新建menu文件夾,在該文件夾下面建立menu.main.xml,代碼如下:
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
android:id="@+id/action_share"
android:orderInCategory="90"
android:title="按鈕"
app:showAsAction="ifRoom" />
在MainActivity.java中重寫(xiě)onCreateOptionsMenu方法如下所示:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
3. 左側(cè)的返回箭頭
首先,你得先準(zhǔn)備一個(gè)返回箭頭的圖標(biāo),然后以下兩種都行,都可以實(shí)現(xiàn)顯示小箭頭,并且點(diǎn)擊小箭頭返回
第一種方案
//設(shè)置小箭頭
toolbar.setNavigationIcon(R.drawable.common_back_ic);
//設(shè)置小箭頭點(diǎn)擊事件
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
這種方案是只能在當(dāng)前的Activity中使用,達(dá)不到復(fù)用的目的。
第二種方案
在日常的開(kāi)發(fā)中,通常我們會(huì)寫(xiě)一個(gè)基類,讓所有的Activity都繼承于這個(gè)基類,便于統(tǒng)一管理和減少代碼量。
所以我們可以在改基類(比如:BaseActivity.java)中寫(xiě)入以下方法:
/**
* 設(shè)置左上角back按鈕
*/
public void setBackArrow() {
final Drawable upArrow = getResources().getDrawable(R.drawable.common_back_ic);
//給ToolBar設(shè)置左側(cè)的圖標(biāo)
getSupportActionBar().setHomeAsUpIndicator(upArrow);
// 給左上角圖標(biāo)的左邊加上一個(gè)返回的圖標(biāo) 。對(duì)應(yīng)ActionBar.DISPLAY_HOME_AS_UP
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//設(shè)置actionBar的標(biāo)題是否顯示,對(duì)應(yīng)ActionBar.DISPLAY_SHOW_TITLE。
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
/**
* 點(diǎn)擊左上角的返回按鈕,結(jié)束本Activity
* home就是左上角的小箭頭,在toolbar上
*
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
basefinish();
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* 抽象方法,用于結(jié)束activity
*/
public abstract void basefinish();
@Override
public void onBackPressed() {
basefinish();
}
這樣的話,我們?cè)诘钠渌鸄ctivity只要繼承于這個(gè)BaseActivity,就需要實(shí)現(xiàn)抽象方法,抽象方法會(huì)實(shí)現(xiàn)返回操作,我們每次只用調(diào)用 setBackArrow()這個(gè)方法就可以很方便的實(shí)現(xiàn)返回小箭頭的功能了。簡(jiǎn)直不能更方便啦!
到此就實(shí)現(xiàn)了ToolBar的基本使用,建立了自己的一個(gè)標(biāo)題欄,效果和上面是一樣的:
標(biāo)題欄-最終
特此記錄!
總結(jié)
以上是生活随笔為你收集整理的android 复用标题栏,Android基础---使用ToolBar教你打造一个通用的标题栏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java随机整数_java如何产生1-8
- 下一篇: android adb 静默安装,And