android - ActionBar 项目总是出现在溢出菜单中

标签 android android-actionbar android-appcompat

我正在尝试在操作栏中添加操作项目,但即使有很多空间,项目也总是添加到溢出列表中。有什么解决这个问题的建议吗??

enter image description here

应该是这样

enter image description here

主.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/ic_action_refresh"
        android:showAsAction="ifRoom"
        android:title="@string/action_refresh" />

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_search"
        android:showAsAction="ifRoom"
        android:title="@string/action_search" />

    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never" />


</menu>

主 Activity .java

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.actionbardemo.app" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.actionbardemo.app.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

构建.gradle

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.android.support:appcompat-v7:19.0.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

最佳答案

我的应用程序使用支持库来兼容低至 Android 2.2 的版本,因此我必须定义自己的 XML 命名空间并将该命名空间用作属性前缀

解决方案是这样的,我正在写这个 android:showAsAction="ifRoom" 但我应该有 app:showAsAction="ifRoom"

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/ic_action_refresh"
        app:showAsAction="ifRoom"
        android:title="@string/action_refresh" />

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_search"
        app:showAsAction="ifRoom"
        android:title="@string/action_search" />

    <item
        android:id="@+id/action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never" />


</menu>

关于android - ActionBar 项目总是出现在溢出菜单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22829131/

相关文章:

android - 问题 : Databinding not working with runtimeOnly gradle dependncies

android - 找不到 Theme.AppCompat.Light 以获得新的 Android ActionBar 支持

android - 当方向改变时,Actionbar scherlock 不会刷新

Android拆分ActionBar - 更改图标布局

android - getActionBar() 返回 Null (AppCompat-v7 21)

android - 如何为一个事件设置多个监听器?

java - 需要从 AsyncTask 返回值

android - 我想在 android 中制作一个微调器,使其充当下拉菜单而不是弹出

android - 您可以为 AppCompat 主题自定义的完整属性列表是什么?它们的默认值是什么?

android - 从 fragment 在我的工具栏上设置字幕