---恢復內容開始---
Actionbar加按鈕:
在res文件夾下新建menu文件夾(如果你沒有),然后添加一個XML文件
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<!-- action items -->
<!-- showAsAction默認為never -->
<item
android:id="@+id/delete1"
android:icon="@android:drawable/ic_menu_camera"
android:showAsAction="always"
android:title="拍照"/>
<item
android:id="@+id/add"
android:icon="@android:drawable/ic_menu_add"
android:showAsAction="ifRoom"
android:title="添加">
</item>
<item
android:id="@+id/delete2"
android:icon="@android:drawable/ic_menu_edit"
android:showAsAction="ifRoom"
android:title="編輯"/>
<item
android:id="@+id/share"
android:icon="@android:drawable/ic_menu_share"
android:showAsAction="never"
android:title="分享"/>
<item
android:id="@+id/call"
android:icon="@android:drawable/ic_menu_call"
android:showAsAction="never"
android:title="呼叫"/>
<item
android:id="@+id/delete3"
android:icon="@android:drawable/ic_menu_help"
android:showAsAction="never"
android:title="幫助"/>
<!-- action views -->
<item
android:id="@+id/search"
android:actionViewClass="android.widget.SearchView"
android:showAsAction="always"
android:title="查詢"/>
<item
android:id="@+id/clock"
android:actionLayout="@layout/actionbar_layout_menu"
android:showAsAction="always"
android:title="時鍾"/>
</menu>
時鍾布局文件actionbar_layout_menu.xml:
<?xml version="1.0" encoding="utf-8"?> <AnalogClock xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > </AnalogClock>
現在在activity里設置
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getActionBar(); // 是否顯示應用程序圖標,默認為true actionBar.setDisplayShowHomeEnabled(true); // 是否顯示應用程序標題,默認為true actionBar.setDisplayShowTitleEnabled(true); /* * 是否將應用程序圖標轉變成可點擊的按鈕,默認為false。 * * 如果設置了DisplayHomeAsUpEnabled為true, * * 則該設置自動為 true。 */ actionBar.setHomeButtonEnabled(true); /* * 在應用程序圖標的左邊顯示一個向左的箭頭, * * 並且將HomeButtonEnabled設為true。 * * 默認為false。 */ actionBar.setDisplayHomeAsUpEnabled(true); forceShowOverflowMenu(); } /** * 如果設備有物理菜單按鍵,需要將其屏蔽才能顯示OverflowMenu */ private void forceShowOverflowMenu() { try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class .getDeclaredField("sHasPermanentMenuKey"); if (menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { e.printStackTrace(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.actionbar_menu, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { /* * 將actionBar的HomeButtonEnabled設為ture, * * 將會執行此case */ case android.R.id.home: finish(); break; case R.id.menu_setting: Toast.makeText(this, "設置", Toast.LENGTH_LONG).show(); break; // 其他省略... default: break; } return super.onOptionsItemSelected(item); } @Override public boolean onMenuOpened(int featureId, Menu menu) { setOverflowIconVisible(featureId, menu); return super.onMenuOpened(featureId, menu); } /** * 顯示OverflowMenu的Icon * * @param featureId * @param menu */ private void setOverflowIconVisible(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod( "setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { Log.d("OverflowIconVisible", e.getMessage()); } } } } }

轉自:http://blog.csdn.net/zhangzeyuaaa/article/details/40783681
Titlebar加自定義按鈕:
在activity的onCreate()里加入代碼,這幾行代碼添加的時候要注意順序
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.activity_main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title);
title.xml的話就放自己需要的東西
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="48dp"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="test"/> </LinearLayout>
在清單文件中需要設置的activity里添加theme屬性
android:theme="@style/titlebarstyle"
這是個自定義的style
<style name="CustomizedWindowTitleBackground"> <item name="android:background">#047BF0</item> </style> <style name="titlebarstyle" parent="android:Theme"> <item name="android:windowTitleSize">48dp</item> <item name="android:windowTitleBackgroundStyle">@style/CustomizedWindowTitleBackground</item> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style>
---恢復內容結束---
