我正在尝试向操作栏添加搜索图标,它会显示在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,我不知道这与它有什么关系。
感谢您的帮助,这是我的第一个应用程序。
答案 0 :(得分:1)
对于ActionBarActivity
,您将使用app:showAsAction
,因为它将是AppCompat属性。
对于Activity
,您应该使用android:showAsAction
,因为这是它读取的唯一属性。
如果您希望它始终显示为图标,请将该属性设置为"always"
。
答案 1 :(得分:0)
让您的活动扩展ActionBarActivity。您拥有的menu_launch.xml将起作用。
答案 2 :(得分:0)
尝试更改主题。这也取决于你的主题。 在styles.xml文件中
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
让我知道这是否有效,因为其他一切似乎都在您的代码中工作。您还需要将此引用放在manifest.xml文件中。 为您的主要活动
<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 =&#34;总是&#34;。
答案 3 :(得分:0)
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>
答案 4 :(得分:0)
android:showAsAction="never"
android:showAsAction="ifRoom"
这些问题只是将其改为
android:showAsAction="always"
尝试将app:showAsAction
更改为android:showAsAction