android學習筆記:在actionBar中增加控制元件
阿新 • • 發佈:2018-11-14
1.在AndroidManifest.xml中新增配置activity屬性
<activity android:name=".killProcess"
android:label="殺殺殺"
android:theme="@style/AppTheme">
</activity>
2.在menu資料夾下新建一個佈局,並在佈局中增加控制元件
3.然後在activity對應的java檔案中過載onCreateOptionsMenu方法,並選用自己建立的menu檔案,比如此處的“R.menu.kill”<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".killProcess"> <item android:id="@+id/personalInformation" android:title="一般不顯示" android:icon="@drawable/cn_icon_person_center_blue" android:orderInCategory="100" app:showAsAction="always" /><!--icon可以自選一個圖片,放在res檔案下的drawable目錄下--> <item android:id="@+id/dianhua" android:title="一般不顯示" android:orderInCategory="100" app:showAsAction="never" /><!--如果是never則會將icon收斂到三個點點點的menu中--> </menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.kill, menu);
return super.onCreateOptionsMenu(menu);
}
這種方式的actionBar是沒有三個點點點的overflow按鈕
如果需要使用帶overflow的標題欄,可以通過反射設定顯示overflow按鈕,修改ViewConfiguration類的sHsPermanentMenuKey欄位值
然後在OnCreate方法中呼叫一下剛才的setOverflowShowingAlways()就可以了private void setOverflowShowingAlways() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } catch (Exception e) { e.printStackTrace(); } }
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kill_process);
setOverflowShowingAlways();
另外,也可以換一個theme
1.在AndroidManifest.xml檔案中將theme改成AppTheme.NoActionBar
<activity android:name=".killProcess"
android:label="殺殺殺"
android:theme="@style/AppTheme.NoActionBar">
</activity>
2.在activity的佈局檔案中增加toolBar
<android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
3.在activity對應的java檔案中添加布局檔案中定義的toolBar
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kill_process);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
menu檔案和onCreateOptionsMenu和第一種方式保持一致就可以了,執行效果如下: