如何(以编程方式)知道菜单是否在ActionBar
上显示文字?
<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">
<item
android:id="@+id/action_cancel"
android:orderInCategory="100"
android:title="@string/action_cancel"
android:icon="@drawable/ic_cancel_24dp"
app:showAsAction="always|withText"/>
<item
android:id="@+id/action_clear"
android:orderInCategory="200"
android:title="@string/action_clear"
android:icon="@drawable/ic_clear_24dp"
app:showAsAction="always|withText"/>
<item
android:id="@+id/action_done"
android:orderInCategory="300"
android:title="@string/action_done"
android:icon="@drawable/ic_done_24dp"
app:showAsAction="always|withText"/>
</menu>
如果没有显示文字,我希望菜单保留为菜单
我还尝试将always|withText
替换为ifRoom|withText
,但在这两种情况下,我用于调试的设备仅显示图标,而不显示文本。
答案 0 :(得分:0)
我终于使用了自定义工具栏布局,我在其中放置了带有图标+文本的项目。
<TextView
android:id="@+id/action_cancel"
style="@style/ActionBarItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_cancel"
android:text="@string/action_cancel"/>
<TextView
android:id="@+id/action_clear"
style="@style/ActionBarItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_clear"
android:text="@string/action_clear"/>
<TextView
android:id="@+id/action_done"
style="@style/ActionBarItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/ic_done"
android:text="@string/action_done"/>
和
private void setupActionBar() {
MyLog.pe(DEBUG, TAG, "+ setupActionBar()");
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
try {
assert actionBar != null;
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.actionbar_cancel_clear_done);
final View customActionBarView = actionBar.getCustomView();
customActionBarView.setLayoutParams(
new Toolbar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
customActionBarView.findViewById(R.id.action_cancel).setOnClickListener(this);
customActionBarView.findViewById(R.id.action_clear).setOnClickListener(this);
customActionBarView.findViewById(R.id.action_done).setOnClickListener(this);
} catch (Exception e) {
MyLog.e(DEBUG, TAG, "SupportActionBar is null!");
}
MyLog.px(DEBUG, TAG, "- setupActionBar()");
}