要想將全部Activity 的Action Bar隱藏或者單獨隱藏某個或某幾個Activity中的Action Barjava
只須要再AndroidManifest.xml中將對應的theme改爲後綴爲 NoActionBar, 如android
<activity android:name=".Demo01" //更改當前Activity的ActionBar爲隱藏狀態 android:theme="@style/Theme.AppCompat.Light.NoActionBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
但這種方式的缺陷在於, 一旦設置 , 再程序運行時不能更改 , 不能靈活的隱藏和顯示 ,app
能夠經過 ide
//獲取當前ActionBar actionBar = getSupportActionBar();
經過this
actionBar.hide(); actionBar.show();
顯示和隱藏ActionBarspa
public class ActionBarDemo extends AppCompatActivity { private boolean ActionBarIsShow = true; private ActionBar actionBar; private Button actionBarBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_action_bar_demo); actionBarBtn = findViewById(R.id.actionBarBtn); //獲取當前ActionBar actionBar = getSupportActionBar(); } @SuppressLint("SetTextI18n") public void showActionBar(View view) { if (ActionBarIsShow){ //隱藏ActionBar actionBar.hide(); actionBarBtn.setText("顯示ActionBar"); ActionBarIsShow = false; }else { //顯示ActionBar actionBar.show(); actionBarBtn.setText("隱藏ActionBar"); ActionBarIsShow = true; } } }
要在ActionBar上添加圖標, 須要先建立資源文件, 在res目錄下建立menu目錄code
而後建立menu.xml資源文件xml
<?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/search" android:icon="@drawable/icon_search" android:title="search" app:showAsAction="always" /> <!--showAsAction 下的選項 always : 老是顯示在ActionBar上--> <!--ifRoom : 當Action有可用空間時就顯示在ActionBar上--> <!--沒有足夠空間,就顯示在溢出菜單中--> <!--never : 表示菜單項永遠都不顯示在ActionBar上--> <!--withText: 將菜單項顯示在ActionBar上,而且顯示文本,--> <!--受到ActionBar空間的顯示,文本可能顯示不全--> <item android:id="@+id/home" android:icon="@drawable/icon_home" android:title="主頁" app:showAsAction="ifRoom" /> <item android:id="@+id/setting" android:title="設置" app:showAsAction="ifRoom" /> <item android:id="@+id/about" android:title="關於" app:showAsAction="never" /> </menu>
而後在Java代碼中,重寫onCreateOptionsMenu方法對象
@Override public boolean onCreateOptionsMenu(Menu menu) { //實例化一個MenuInflater對象 MenuInflater inflater = getMenuInflater(); //解析菜單文件 inflater.inflate(R.menu.menu,menu); return super.onCreateOptionsMenu(menu); }
在item裏更改 search的itemblog
<item android:id="@+id/search" android:icon="@drawable/icon_search" android:title="搜索" app:showAsAction="always" app:actionViewClass="android.support.v7.widget.SearchView" /> <!--添加searchView實現類(android自帶)-->
這樣點擊搜索圖標會自動彈出搜索框
響應Action按鈕的點擊事件, 重寫onOptionsItemSelected方法
經過方法傳入的MenuItem參數調用它的getItemId()方法和menu資源中的id進行比較
從而辨別出用戶點擊的是哪個Action按鈕
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.home: Toast.makeText(this, "點擊了主頁按鈕", Toast.LENGTH_SHORT).show(); default: return super.onOptionsItemSelected(item); } }
新建兩個Acitvity Demo02和NewActivity Demo02做爲主頁面
在Demo02 中添加一個Button ,點擊Button跳轉到NewActivtiy的頁面
NewActivity的源碼
public class NewActivity extends AppCompatActivity { @SuppressLint("RestrictedApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); //判斷父Activity是否爲空,不爲空設置導航圖標顯示 if (NavUtils.getParentActivityName(NewActivity.this) != null) { //顯示向左的箭頭圖標 getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); } //須要在AndroidManifest.xml文件中添加meta標籤 // <activity android:name=".Demo02.NewActivity" // android:label="新頁面"> // <meta-data // android:name="android.support.PARENT_ACTIVITY" // android:value=".Demo02.NewActivity" /> // 這個設置父Activity // </activity> } }