操作栏不显示项目

时间:2015-05-25 23:27:04

标签: android android-actionbar android-appcompat android-styles

我正在开发一个支持API-9的Android应用程序,带有应用程序名称的操作栏出现,但问题是项目没有出现 这是菜单文件:

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

    <!-- http://schemas.android.com/apk/lib/com.fakher.actualitefoot -->
    <!-- Settings -->
    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/ic_action_settings"
        android:title="@string/action_settings"
        app:showAsAction="never|withText" />

    <!-- Check updates -->
    <item
        android:id="@+id/action_check_updates"
        android:icon="@drawable/ic_action_refresh"
        android:title="@string/action_check_updates"
        app:showAsAction="never|withText" />

</menu>

主要班级:

public class MainActivity extends FragmentActivity {

    private final Handler handler = new Handler();
    private PagerSlidingTabStrip tabs;
    private ViewPager pager;
    private PagerAdapter adapter;
    private AdView adView;

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

        ....
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    private Drawable.Callback drawableCallback = new Drawable.Callback() {
        @Override
        public void invalidateDrawable(Drawable who) {
            getActionBar().setBackgroundDrawable(who);
        }

        @Override
        public void scheduleDrawable(Drawable who, Runnable what, long when) {
            handler.postAtTime(what, when);
        }

        @Override
        public void unscheduleDrawable(Drawable who, Runnable what) {
            handler.removeCallbacks(what);
        }
    };

    @Override
    public void onPause() {
        adView.pause();
        super.onPause();
    }

    @Override
    public void onResume() {
        super.onResume();
        adView.resume();
    }

    @Override
    public void onDestroy() {
        adView.destroy();
        super.onDestroy();
    }

}

stykes.xml:

<resources>

    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <style name="AppTheme" parent="AppBaseTheme">

        <item name="android:windowBackground">@color/background_window</item>
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
    </style>

    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
        <!--<item name="android:icon">@drawable/ic_launcher</item>-->
        <item name="android:background">#ff127d08</item>
    </style>

</resources>

我希望操作栏显示包含菜单文件中声明的项目的菜单 谢谢:)

2 个答案:

答案 0 :(得分:1)

对我来说最突出的是你有flex-direction, “never”参数将阻止该项目出现。我认为应该改为:

app:showAsAction="never|withText"

或:

app:showAsAction="ifRoom" 

“withText”也可能搞砸了。我是android编程的新手,所以我可能错了。但检查一下,让我知道它是否有效。而且,我看不到所有的代码,但你导入android.support.v7.app.ActionBar(因为该应用程序是为API 9)?没有它也不会起作用。

答案 1 :(得分:1)

您似乎正在尝试使用appcompat-v7操作栏后退。如果是这种情况,您必须继承AppCompatActivity(或其前身ActionBarActivity),而不是FragmentActivity。由于AppCompatActivityActionBarActivity本身会扩展FragmentActivity,因此您不会丢失任何与片段相关的功能。

此外:

  • 将所有getActionBar()来电更改为getSupportActionBar()

  • 确保您的主题继承自Theme.AppCompat(或继承自Theme.AppCompat

  • 的其他内容