actionbar -- 溢位選單中既顯示圖示又顯示文字
阿新 • • 發佈:2019-01-06
通常,在溢位選單中的顯示是隻有文字,如下圖:
現在我們想要顯示為下圖中的樣式,既有圖示又有文字:
是否顯示這個值是由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。