1. 程式人生 > >actionbar -- 溢位選單中既顯示圖示又顯示文字

actionbar -- 溢位選單中既顯示圖示又顯示文字

通常,在溢位選單中的顯示是隻有文字,如下圖:

現在我們想要顯示為下圖中的樣式,既有圖示又有文字:

是否顯示這個值是由MenuBuilder的變數值mOptionalIconsVisible決定的。該值預設是false的。

<pre class="java" name="code">       
private boolean mOptionalIconsVisible = false;

 void setOptionalIconsVisible(boolean visible) {
            mOptionalIconsVisible = visible;
        }
 boolean getOptionalIconsVisible() {
            return mOptionalIconsVisible;
        }
    

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		MenuInflater mMenuInflater = new MenuInflater(this);
		mMenuInflater.inflate(R.menu.simrecord_menu, menu);

		setIconVisable(menu,true);
		
		return true;
	}
<pre class="java" name="code">	public void setIconVisible(Menu menu, boolean visable){
		Field field;
		try {
			field = menu.getClass().getDeclaredField("mOptionalIconsVisible");
			
			Log.d(TAG," setIconVisible1() field="+field);
			field.setAccessible(true);
			field.set(menu, visable);
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		
	}

在反射中,getDeclaredField()獲取MenuBuilder.java中的屬性值mOptionalIconsVisible。

通過field.set(menu, visable);設定該值為true。