如何在 android 中显示带有菜单的图标
How to Show Icon with Menus in android
我想在选项菜单中显示图标。我尝试了很多方法,但我找不到 success.In 我的工具栏一些图标已经放好了,但我想要我的选项菜单中的图标。
我想要和下图一样的:-
我的menu.xml:-
<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"
tools:context=".MainActivity">
<item
android:id="@+id/action_search"
android:title="@string/action_search"
android:orderInCategory="1"
android:icon="@drawable/search"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_cart"
android:title="@string/action_search"
android:orderInCategory="2"
android:icon="@drawable/shoppingcart"
android:actionLayout="@layout/feed_update_count"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_overflow"
android:title="@string/my_cart"
android:icon="@drawable/ic"
android:orderInCategory="11111"
app:showAsAction="always">
<menu>
<item
android:id="@+id/login"
android:title="@string/login"
android:orderInCategory="1"
android:icon="@drawable/account"
app:showAsAction="always|withText"/>
<item
android:id="@+id/my_order"
android:title="@string/my_order"
android:orderInCategory="2"
android:icon="@drawable/track"
app:showAsAction="withText"/>
<item
android:id="@+id/wishlist"
android:title="@string/wishlist"
android:orderInCategory="3"
android:icon="@drawable/wishlist"
app:showAsAction="withText"/>
</menu>
</item>
</menu>
我是 android 开发新手,任何人都可以帮助我如何在选项菜单中显示图标。提前致谢!
默认情况下,溢出菜单将禁用图标并仅显示文本,您需要一些解决方法。
第一种方式
您可以通过将以下代码添加到您的 class
来启用它
@Override
public boolean onMenuOpened(int featureId, Menu menu)
{
if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
if(menu.getClass().getSimpleName().equals("MenuBuilder")){
try{
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
}
catch(NoSuchMethodException e){
Log.e(TAG, "onMenuOpened", e);
}
catch(Exception e){
throw new RuntimeException(e);
}
}
}
return super.onMenuOpened(featureId, menu);
}
第二种方式
创建您自己的溢出项和嵌套菜单以同时显示图标和文本。
示例,
<item
android:id="@+id/overflow"
android:icon="@drawable/ic_overflow_white"
android:orderInCategory="201"
android:title="@string/overflow"
app:showAsAction="always">
<menu>
<item
android:id="@+id/cab_menu_select_all"
android:icon="@drawable/ic_select_all_grey"
android:orderInCategory="100"
android:title="@string/cab_menu_select_all"
app:showAsAction="always|withText"></item>
</menu>
</item>
试试这个代码,它适合你
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:title="@string/action_search"/>
<!-- Settings, should always be in the overflow -->
<item
android:id="@+id/action_location_found"
android:icon="@drawable/ic_action_location_found"
android:showAsAction="always"
android:title="@string/action_location_found"/>
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_action_menu"
android:orderInCategory="11111"
android:showAsAction="always">
<menu>
<!-- Refresh -->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="ifRoom"
android:title="@string/action_refresh"/>
<!-- Help -->
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:showAsAction="never"
android:title="@string/action_help"/>
<!-- Check updates -->
<item
android:id="@+id/action_check_updates"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="never"
android:title="@string/action_check_updates"/>
</menu>
</item>
</menu>
- See more at: http://www.theappguruz.com/blog/android-working-android-actionbar#sthash.ArNQTEBF.dpuf
创建您的菜单xml如下
<item
android:id="@+id/menu_item_action_parameters"
android:title="@string/text_parameters"
android:icon="@drawable/ic_menu_parameter"
app:showAsAction="ifRoom|withText"/> >
<menu>
<item
android:id="@+id/action_dropdown1"
android:title="@string/dropdown_1" />
<item
android:id="@+id/action_dropdown2"
android:title="@string/dropdown2" />
<item
android:id="@+id/action_dropdown3"
android:title="@string/dropdown3" />
</menu>
</item>
<item
more item
</item>
然后
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_dropdown1:
.....
return true;
case R.id.action_dropdown2:
.....
return true;
.....
default:
return super.onOptionsItemSelected(item);
}
}
这完全有效 code.Mark 如果有帮助,请顶起这个答案。 :) 编码愉快。
您需要将 tools:context="your class" 添加到菜单标签
<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"
tools:context=".activities.BaseActivity">
<item
android:id="@+id/action_notification1"
android:icon="@drawable/one"
android:title="action_notification"
app:showAsAction="always"/>
<item
android:id="@+id/action_notification2"
android:icon="@drawable/two"
android:title="action_notification"
app:showAsAction="always"/>
<item
android:id="@+id/action_notification3"
android:icon="@drawable/three"
android:title="action_notification"
app:showAsAction="always"/>
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
您应该将 tool:context 写入菜单标签,然后 运行 您将在文本中获得图标
我想在选项菜单中显示图标。我尝试了很多方法,但我找不到 success.In 我的工具栏一些图标已经放好了,但我想要我的选项菜单中的图标。 我想要和下图一样的:-
我的menu.xml:-
<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"
tools:context=".MainActivity">
<item
android:id="@+id/action_search"
android:title="@string/action_search"
android:orderInCategory="1"
android:icon="@drawable/search"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_cart"
android:title="@string/action_search"
android:orderInCategory="2"
android:icon="@drawable/shoppingcart"
android:actionLayout="@layout/feed_update_count"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_overflow"
android:title="@string/my_cart"
android:icon="@drawable/ic"
android:orderInCategory="11111"
app:showAsAction="always">
<menu>
<item
android:id="@+id/login"
android:title="@string/login"
android:orderInCategory="1"
android:icon="@drawable/account"
app:showAsAction="always|withText"/>
<item
android:id="@+id/my_order"
android:title="@string/my_order"
android:orderInCategory="2"
android:icon="@drawable/track"
app:showAsAction="withText"/>
<item
android:id="@+id/wishlist"
android:title="@string/wishlist"
android:orderInCategory="3"
android:icon="@drawable/wishlist"
app:showAsAction="withText"/>
</menu>
</item>
</menu>
我是 android 开发新手,任何人都可以帮助我如何在选项菜单中显示图标。提前致谢!
默认情况下,溢出菜单将禁用图标并仅显示文本,您需要一些解决方法。
第一种方式
您可以通过将以下代码添加到您的 class
来启用它@Override
public boolean onMenuOpened(int featureId, Menu menu)
{
if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
if(menu.getClass().getSimpleName().equals("MenuBuilder")){
try{
Method m = menu.getClass().getDeclaredMethod(
"setOptionalIconsVisible", Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
}
catch(NoSuchMethodException e){
Log.e(TAG, "onMenuOpened", e);
}
catch(Exception e){
throw new RuntimeException(e);
}
}
}
return super.onMenuOpened(featureId, menu);
}
第二种方式
创建您自己的溢出项和嵌套菜单以同时显示图标和文本。
示例,
<item
android:id="@+id/overflow"
android:icon="@drawable/ic_overflow_white"
android:orderInCategory="201"
android:title="@string/overflow"
app:showAsAction="always">
<menu>
<item
android:id="@+id/cab_menu_select_all"
android:icon="@drawable/ic_select_all_grey"
android:orderInCategory="100"
android:title="@string/cab_menu_select_all"
app:showAsAction="always|withText"></item>
</menu>
</item>
试试这个代码,它适合你
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:showAsAction="always"
android:title="@string/action_search"/>
<!-- Settings, should always be in the overflow -->
<item
android:id="@+id/action_location_found"
android:icon="@drawable/ic_action_location_found"
android:showAsAction="always"
android:title="@string/action_location_found"/>
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/ic_action_menu"
android:orderInCategory="11111"
android:showAsAction="always">
<menu>
<!-- Refresh -->
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="ifRoom"
android:title="@string/action_refresh"/>
<!-- Help -->
<item
android:id="@+id/action_help"
android:icon="@drawable/ic_action_help"
android:showAsAction="never"
android:title="@string/action_help"/>
<!-- Check updates -->
<item
android:id="@+id/action_check_updates"
android:icon="@drawable/ic_action_refresh"
android:showAsAction="never"
android:title="@string/action_check_updates"/>
</menu>
</item>
</menu>
- See more at: http://www.theappguruz.com/blog/android-working-android-actionbar#sthash.ArNQTEBF.dpuf
创建您的菜单xml如下
<item
android:id="@+id/menu_item_action_parameters"
android:title="@string/text_parameters"
android:icon="@drawable/ic_menu_parameter"
app:showAsAction="ifRoom|withText"/> >
<menu>
<item
android:id="@+id/action_dropdown1"
android:title="@string/dropdown_1" />
<item
android:id="@+id/action_dropdown2"
android:title="@string/dropdown2" />
<item
android:id="@+id/action_dropdown3"
android:title="@string/dropdown3" />
</menu>
</item>
<item
more item
</item>
然后
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_dropdown1:
.....
return true;
case R.id.action_dropdown2:
.....
return true;
.....
default:
return super.onOptionsItemSelected(item);
}
}
这完全有效 code.Mark 如果有帮助,请顶起这个答案。 :) 编码愉快。
您需要将 tools:context="your class" 添加到菜单标签
<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"
tools:context=".activities.BaseActivity">
<item
android:id="@+id/action_notification1"
android:icon="@drawable/one"
android:title="action_notification"
app:showAsAction="always"/>
<item
android:id="@+id/action_notification2"
android:icon="@drawable/two"
android:title="action_notification"
app:showAsAction="always"/>
<item
android:id="@+id/action_notification3"
android:icon="@drawable/three"
android:title="action_notification"
app:showAsAction="always"/>
</menu>
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
您应该将 tool:context 写入菜单标签,然后 运行 您将在文本中获得图标