以编程方式设置 android:showAsAction="ifRoom|withText"

22

是否可以通过编程的方式设置标志,如建议hereandroid:showAsAction="ifRoom|withText"

3个回答

49
对于每个 MenuItem,执行以下操作:
myMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

我在Kotlin中尝试使用myMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);,但它没有起作用,它只允许输入一个值类型,是否有其他方法? - Jan sebastian

14
如果你想在运行时设置这些属性,那么你需要在 MenuItem 上进行设置,而不是在 ActionBar 上进行设置。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    MenuItem item = menu.findItem(R.id.your_menu_item);
    item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
}

-1

你试过这个吗:

getSupportActionBar().setDisplayOptions(MenuItem.SHOW_AS_ACTION_IF_ROOM);
getSupportActionBar().setDisplayOptions(MenuItem.SHOW_AS_ACTION_WITH_TEXT);

4
我认为应该使用标志样式(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT) - Geobits
4
根据文档,我认为这不应该起作用,因为setDisplayOptions()需要ActionBar的DISPLAY_常量。尽管如此,一些常量确实会重叠[*](http://developer.android.com/reference/android/view/MenuItem.html#SHOW_AS_ACTION_ALWAYS)。 - A--C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接