菜单图标不显示
Menu icon doesn't show up
我已经阅读了数以千计的此类问题和接缝,即使遵循最基础的教程我也无法正常工作。
我有一个带菜单的工具栏,但在预览和运行时都没有显示项目图标:
图标可以从 svg 中绘制,当我尝试放置在 buttons
或 imageviews
时,所有图标都显示正常
我的菜单是:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.MenuAdsAppCompatActivity">
<item android:id="@+id/action_notification1"
android:icon="@drawable/ic_more"
android:title="action_notification">
<item android:id="@+id/action_share_us"
android:icon="@drawable/ic_share"
android:title="@string/share_us" />
<item android:id="@+id/action_rate_us"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/rate" />
<item android:id="@+id/action_about"
android:checked="false"
android:icon="@drawable/ic_about"
android:title="@string/about" />
</item>
</menu>
另一件事是在运行时菜单覆盖了工具栏,我希望它表现得像菜单从工具栏底部开始的设计预览
===================更新========================= ====
相关activity方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar, menu);
return true;
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
ViewGroup v = (ViewGroup) ((ViewGroup) this.findViewById(android.R.id.content)).getChildAt(0);
Toolbar toolbar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.action_bar, null);
this.helpView = (WebView) LayoutInflater.from(this).inflate(R.layout.html_dialog, null);
v.addView(toolbar, 0);
try {
ViewGroup.MarginLayoutParams layout = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
layout.setMargins(-v.getPaddingLeft(), -v.getPaddingTop(), -v.getPaddingRight(), v.getPaddingTop()+5);
toolbar.setLayoutParams(layout);
} catch (Exception e) {
e.printStackTrace();
}
this.setSupportActionBar(toolbar);
}
================================更新 2 =========== ===
根据@Dhiraj 的建议,图标现在可以了...但我仍然想让菜单不覆盖工具栏
将您的项目包裹在 <menu>
内,并将 app:showAsAction="always"
添加到您的父项目。
更新菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".activities.MenuAdsAppCompatActivity">
<item android:id="@+id/action_notification1"
android:icon="@drawable/ic_more"
app:showAsAction="always"
android:title="action_notification">
<menu>
<item android:id="@+id/action_share_us"
android:icon="@drawable/ic_share"
android:title="@string/share_us" />
<item android:id="@+id/action_rate_us"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/rate" />
<item android:id="@+id/action_about"
android:checked="false"
android:icon="@drawable/ic_about"
android:title="@string/about" />
</menu>
</item>
</menu>
要在工具栏下方显示菜单,您需要为您的样式提供 actionOverflowMenuStyle
。
为此,请参阅:
我已经阅读了数以千计的此类问题和接缝,即使遵循最基础的教程我也无法正常工作。
我有一个带菜单的工具栏,但在预览和运行时都没有显示项目图标:
图标可以从 svg 中绘制,当我尝试放置在 buttons
或 imageviews
我的菜单是:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.MenuAdsAppCompatActivity">
<item android:id="@+id/action_notification1"
android:icon="@drawable/ic_more"
android:title="action_notification">
<item android:id="@+id/action_share_us"
android:icon="@drawable/ic_share"
android:title="@string/share_us" />
<item android:id="@+id/action_rate_us"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/rate" />
<item android:id="@+id/action_about"
android:checked="false"
android:icon="@drawable/ic_about"
android:title="@string/about" />
</item>
</menu>
另一件事是在运行时菜单覆盖了工具栏,我希望它表现得像菜单从工具栏底部开始的设计预览
===================更新========================= ====
相关activity方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_toolbar, menu);
return true;
}
@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
ViewGroup v = (ViewGroup) ((ViewGroup) this.findViewById(android.R.id.content)).getChildAt(0);
Toolbar toolbar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.action_bar, null);
this.helpView = (WebView) LayoutInflater.from(this).inflate(R.layout.html_dialog, null);
v.addView(toolbar, 0);
try {
ViewGroup.MarginLayoutParams layout = (ViewGroup.MarginLayoutParams) toolbar.getLayoutParams();
layout.setMargins(-v.getPaddingLeft(), -v.getPaddingTop(), -v.getPaddingRight(), v.getPaddingTop()+5);
toolbar.setLayoutParams(layout);
} catch (Exception e) {
e.printStackTrace();
}
this.setSupportActionBar(toolbar);
}
================================更新 2 =========== ===
根据@Dhiraj 的建议,图标现在可以了...但我仍然想让菜单不覆盖工具栏
将您的项目包裹在 <menu>
内,并将 app:showAsAction="always"
添加到您的父项目。
更新菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".activities.MenuAdsAppCompatActivity">
<item android:id="@+id/action_notification1"
android:icon="@drawable/ic_more"
app:showAsAction="always"
android:title="action_notification">
<menu>
<item android:id="@+id/action_share_us"
android:icon="@drawable/ic_share"
android:title="@string/share_us" />
<item android:id="@+id/action_rate_us"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/rate" />
<item android:id="@+id/action_about"
android:checked="false"
android:icon="@drawable/ic_about"
android:title="@string/about" />
</menu>
</item>
</menu>
要在工具栏下方显示菜单,您需要为您的样式提供 actionOverflowMenuStyle
。
为此,请参阅: