向操作栏添加操作 Android
Adding Action to the Action Bar Android
我正在尝试向操作栏添加搜索图标,它显示在 Android Studio 的 xml 预览中,但是当我 运行 我的应用程序时它显示在溢出菜单中向上而不是操作栏上的图标。我做错了什么?
menu_launch.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=".LaunchActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
我尝试将 app:showAsAction
设置为 "always"
,但没有成功。
在我的 LaunchActivity.java:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_launch, menu);
return super.onCreateOptionsMenu(menu);
}
我的 LaunchActivity.java 扩展了 Activity,不是 ActionBarActivity,我不知道这是否与它有关。
感谢您的帮助,这是我的第一个应用程序。
让您的 Activity 扩展 ActionBarActivity。您拥有的 menu_launch.xml 会起作用。
尝试更改主题。这也取决于你的主题。
在 styles.xml 文件中
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
让我知道这是否有效,因为其他所有内容似乎都在您的代码中有效。您还需要将此引用放入 manifest.xml 文件。
对于您的主要 activity
<application
android:theme="@style/AppTheme" />
根据文档..
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
这声明当操作栏中有可用空间时,搜索操作应显示为操作按钮,但设置操作应始终显示在溢出中。 (默认情况下,所有操作都会出现在溢出中,但最好明确声明每个操作的设计意图。)
因此,请尝试旋转您的屏幕,只要有足够的空间让图标适合,您的应用程序就会显示它。
你应该设置 showAsAction="always".
Why you are sitting app:showAsAction="never" in action_settings try this
<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=".LaunchActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="ifRoom"/>
</menu>
或
<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=".LaunchActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
</menu>
对于 ActionBarActivity
,您将使用 app:showAsAction
,因为它将是 AppCompat 属性。
对于 Activity
,您应该使用 android:showAsAction
,因为这是它读取的唯一 属性。
如果您希望它始终显示为图标,请将 属性 设置为 "always"
。
android:showAsAction="never"
android:showAsAction="ifRoom"
这些都是问题,改成
android:showAsAction="always"
尝试将 app:showAsAction
更改为 android:showAsAction
我正在尝试向操作栏添加搜索图标,它显示在 Android Studio 的 xml 预览中,但是当我 运行 我的应用程序时它显示在溢出菜单中向上而不是操作栏上的图标。我做错了什么?
menu_launch.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=".LaunchActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
我尝试将 app:showAsAction
设置为 "always"
,但没有成功。
在我的 LaunchActivity.java:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_launch, menu);
return super.onCreateOptionsMenu(menu);
}
我的 LaunchActivity.java 扩展了 Activity,不是 ActionBarActivity,我不知道这是否与它有关。
感谢您的帮助,这是我的第一个应用程序。
让您的 Activity 扩展 ActionBarActivity。您拥有的 menu_launch.xml 会起作用。
尝试更改主题。这也取决于你的主题。 在 styles.xml 文件中
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
让我知道这是否有效,因为其他所有内容似乎都在您的代码中有效。您还需要将此引用放入 manifest.xml 文件。 对于您的主要 activity
<application
android:theme="@style/AppTheme" />
根据文档..
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
这声明当操作栏中有可用空间时,搜索操作应显示为操作按钮,但设置操作应始终显示在溢出中。 (默认情况下,所有操作都会出现在溢出中,但最好明确声明每个操作的设计意图。)
因此,请尝试旋转您的屏幕,只要有足够的空间让图标适合,您的应用程序就会显示它。 你应该设置 showAsAction="always".
Why you are sitting app:showAsAction="never" in action_settings try this
<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=".LaunchActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="ifRoom"/>
</menu>
或
<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=".LaunchActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
</menu>
对于 ActionBarActivity
,您将使用 app:showAsAction
,因为它将是 AppCompat 属性。
对于 Activity
,您应该使用 android:showAsAction
,因为这是它读取的唯一 属性。
如果您希望它始终显示为图标,请将 属性 设置为 "always"
。
android:showAsAction="never"
android:showAsAction="ifRoom"
这些都是问题,改成
android:showAsAction="always"
尝试将 app:showAsAction
更改为 android:showAsAction