1. 程式人生 > >Android ActionBar建立帶圖片和文字的menu

Android ActionBar建立帶圖片和文字的menu

        因為才開始使用到ActionBar功能,所以就很隨意的做了一個效果(隱藏item只能顯示文字而不能顯示圖示);  使用的NavigationDrawerFragment實現的UI框架。         需求是:設定選單的圖示並且帶文字。

設定ActionBarMenu選單style:純文字方式


檔名稱為main.xml

<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="com.scengine.escheduler.MainActivity" >

    <item
        android:id="@+id/action_search"
        android:title="@string/action_search"
        android:icon="@drawable/ic_action_search"
        app:showAsAction="always"/>
     <item
        android:id="@+id/action_firstpage"
        android:title="@string/action_firstpage"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_publish"
        android:title="@string/action_publish"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_draft"
        android:title="@string/action_draft"
        app:showAsAction="never"/>
     <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_notify"
        android:title="@string/action_notify"
        android:icon="@drawable/ic_action_notify"
        app:showAsAction="never"/>
    <item
        android:id="@+id/action_logout"
        android:orderInCategory="100"
        android:title="@string/action_logout"
        app:showAsAction="never"/>


</menu>
框架中呼叫:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
	if (!mNavigationDrawerFragment.isDrawerOpen())
	{
		getMenuInflater().inflate(R.menu.main, menu);
		restoreActionBar();
		return true;
	}
        return super.onCreateOptionsMenu(menu);
}

設定ActionBarMenu選單style:文字加圖片


只需要修改onCreateOptionsMenu方法就可以實現:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{

	SubMenu subMenu = menu.addSubMenu("");

	subMenu.add("探索").setIcon(R.drawable.ic_action_search).setOnMenuItemClickListener(new OnMenuItemClickListener()
	{

		@Override
		public boolean onMenuItemClick(MenuItem item)
		{
			return false;
		}
	});
	subMenu.add("訊息").setIcon(R.drawable.ic_action_notify).setOnMenuItemClickListener(new OnMenuItemClickListener()
	{

		@Override
		public boolean onMenuItemClick(MenuItem item)
		{
				return false;
		}
	});

	MenuItem item = subMenu.getItem();
	item.setIcon(R.drawable.ic_menu);
	item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
        return super.onCreateOptionsMenu(menu);
}
參考文章地址:http://stackoverflow.com/questions/16709083/how-to-make-popup-menu-like-this-using-actionbarsherlock