Android - 菜单项未按预期显示

时间:2015-08-22 10:28:53

标签: android menu

我想在我的活动中包含一个菜单,现在它只有一个项目可以获得图标和文本的帮助,showAsAction设置为ifRoom但它总是显示在动作溢出中。为什么我不能得到可绘制的?

这是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="com.mycompany.myapp.Mymainclass" >

    <item
        android:id="@+id/help"
        android:orderInCategory="100"
        android:title="@string/help"
        android:icon="@drawable/ic_help"
        app:showAsAction="ifRoom"/>

</menu>

MainActivity:

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Base64;
import android.view.Menu;


public class MainActivity extends FragmentActivity {

    SharedPreferences prefs;
    Menu menu;

    @Override
    public void onCreate(Bundle save){
        super.onCreate(save);
        setContentView(R.layout.pokemons_layout);
        prefs = getSharedPreferences("PREFERENCES", Context.MODE_PRIVATE);
        if (findViewById(R.id.fragment_container) != null) {
            if (save != null) {
                return;
            }
            CustomListFragment listFragment = new CustomListFragment();
            listFragment.setArguments(getIntent().getExtras());
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, listFragment).commit();
        }
    }

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

    @Override
    public void onPause(){
        super.onPause();
        String bytearray = Base64.encodeToString(DB.bytearray, Base64.DEFAULT);
        prefs.edit().putString("BYTEARRAY", bytearray).apply();
    }
    @Override
    public void onResume(){
        super.onResume();
        String bytearray = prefs.getString("BYTEARRAY", Base64.encodeToString(DB.bytearray, Base64.DEFAULT));
        DB.bytearray = Base64.decode(bytearray, Base64.DEFAULT);
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个,因为并非所有应用都使用appcompat支持库

  <menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_add_size"
    android:title="@string/menu_add_item"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:icon="@android:drawable/ic_menu_add" />
 </menu>