操作按钮移动到溢出菜单 (ActionBar)
Action buttons move to overflow menu (ActionBar)
我的 ActionBar 有 2 个操作按钮,当我尝试更改 ActionBar 上的徽标时,它没有显示。我找到了解决方案:在我的 Mainactivity class 中,我将 ActionBarActivity(它默认显示)更改为 Activity。然后在 manifest.xml 中,我将主题从
更改为
name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
到
name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
徽标已出现,但 2 个操作按钮已移至溢出菜单。问题是:如何将此操作按钮移回?
我的menu_main.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_share"
android:title="@string/action_share"
android:icon="@drawable/ic_action_share"
android:orderInCategory="110"
app:showAsAction="always" />
<item android:id="@+id/deleteNote"
android:title="@string/delete"
android:orderInCategory="111"
android:icon="@drawable/ic_action_delete"
app:showAsAction="always" />
</menu>
主要Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
if (isAddingNote)
{
menu.removeItem(R.id.deleteNote);
menu.removeItem(R.id.action_share);
}
return true;
在这个论坛上,我找到了两个关闭的帖子,但对我没有帮助。
Action buttons doesn't show up on Action Bar?
和 Actionbar not shown with AppCompat
根据我对你的问题的理解,你最初是想更改 actionBar 的图标,但没有成功,结果出现其他错误。
让我告诉你,你的 menu_main.xml
代码运行完美,没有任何错误。
有两种可能的解决方案,具体取决于您的要求。
如果您使用 material 设计支持开发您的应用程序,即使用 Appcompat,则使用以下答案。
再次将 android:Theme.Holo.Light.DarkActionBar
更改为 Theme.AppCompat.Light.DarkActionBar
。
再次将 extends Activity
更改为 extends ActionBarActivity
。
在您的 java 文件中写入此代码以更改操作栏的徽标。
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.YourLogo);`
如果您想使用 Holo 主题实施您的应用,请使用以下答案。
- 首先,根据您使用的 IDE 从您的项目中删除 Appcompat 库。
- 让你的 activity 成为
extends Activity
。
- 让你的主题成为
android:Theme.Holo.Light.DarkActionBar
。
- 将TargetSDK更改为21以下。将编译版本更改为21以下。
换你main_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_share"
android:title="share"
android:orderInCategory="110"
android:showAsAction="always"
android:icon="@drawable/ic_action_share" />
<item android:id="@+id/deleteNote"
android:title="delete"
android:orderInCategory="111"
android:showAsAction="always"
android:icon="@drawable/ic_action_delete" />
</menu>
P.S。我不明白为什么要从代码中删除菜单项。
IE。
if (isAddingNote)
{
menu.removeItem(R.id.deleteNote);
menu.removeItem(R.id.action_share);
}
我的 ActionBar 有 2 个操作按钮,当我尝试更改 ActionBar 上的徽标时,它没有显示。我找到了解决方案:在我的 Mainactivity class 中,我将 ActionBarActivity(它默认显示)更改为 Activity。然后在 manifest.xml 中,我将主题从
更改为name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
到
name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
徽标已出现,但 2 个操作按钮已移至溢出菜单。问题是:如何将此操作按钮移回?
我的menu_main.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_share"
android:title="@string/action_share"
android:icon="@drawable/ic_action_share"
android:orderInCategory="110"
app:showAsAction="always" />
<item android:id="@+id/deleteNote"
android:title="@string/delete"
android:orderInCategory="111"
android:icon="@drawable/ic_action_delete"
app:showAsAction="always" />
</menu>
主要Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
if (isAddingNote)
{
menu.removeItem(R.id.deleteNote);
menu.removeItem(R.id.action_share);
}
return true;
在这个论坛上,我找到了两个关闭的帖子,但对我没有帮助。 Action buttons doesn't show up on Action Bar? 和 Actionbar not shown with AppCompat
根据我对你的问题的理解,你最初是想更改 actionBar 的图标,但没有成功,结果出现其他错误。
让我告诉你,你的 menu_main.xml
代码运行完美,没有任何错误。
有两种可能的解决方案,具体取决于您的要求。
如果您使用 material 设计支持开发您的应用程序,即使用 Appcompat,则使用以下答案。
再次将
android:Theme.Holo.Light.DarkActionBar
更改为Theme.AppCompat.Light.DarkActionBar
。再次将
extends Activity
更改为extends ActionBarActivity
。在您的 java 文件中写入此代码以更改操作栏的徽标。
ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); actionBar.setIcon(R.drawable.YourLogo);`
如果您想使用 Holo 主题实施您的应用,请使用以下答案。
- 首先,根据您使用的 IDE 从您的项目中删除 Appcompat 库。
- 让你的 activity 成为
extends Activity
。 - 让你的主题成为
android:Theme.Holo.Light.DarkActionBar
。 - 将TargetSDK更改为21以下。将编译版本更改为21以下。
换你main_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_share" android:title="share" android:orderInCategory="110" android:showAsAction="always" android:icon="@drawable/ic_action_share" /> <item android:id="@+id/deleteNote" android:title="delete" android:orderInCategory="111" android:showAsAction="always" android:icon="@drawable/ic_action_delete" /> </menu>
P.S。我不明白为什么要从代码中删除菜单项。 IE。
if (isAddingNote)
{
menu.removeItem(R.id.deleteNote);
menu.removeItem(R.id.action_share);
}