2014-06-26 49 views
3

我已经看了下面的堆栈溢出文章,找出为什么我的操作栏项目被强制溢出。Android操作栏菜单项被强制溢出

我也试图与替换 “ifRoom” “永远”,我不得到有关问题的任何控制台输出找到绘制资源(它们甚至可以在菜单预览窗格中正确显示)

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item android:id="@+id/menu_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="ifRoom|collapseActionView" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    android:title="Search"/> 
<item android:id="@+id/menu_new" 
    android:icon="@drawable/ic_action_new" 
    app:showAsAction="ifRoom" 
    android:title="New" 
    android:orderInCategory="0"/> 
</menu> 

从MainActivity.java

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

    final ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    mSectionsPagerAdapter = new SectionsPagerAdapter(
      getSupportFragmentManager()); 

    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    mViewPager 
      .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
       @Override 
       public void onPageSelected(int position) { 
        actionBar.setSelectedNavigationItem(position); 
       } 
      }); 

    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
     actionBar.addTab(actionBar.newTab() 
       .setText(mSectionsPagerAdapter.getPageTitle(i)) 
       .setTabListener(this)); 
    } 
} 


@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; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    return super.onOptionsItemSelected(item); 
} 

这里是什么样子:

action bar items not showing

这是我的res目录:

/res/

回答

5

对于您所有的app:属性,还具有相应的android:属性(例如,app:showAsActionandroid:showAsAction)。

+0

这个问题解决了它,但Android Studio突出显示了android:showsAsACtion属性现在有一个错误。我可以忽略它,但只是想知道为什么这是需要的 –

+0

@ToddAnderson:什么是错误? – CommonsWare

+2

“应使用app:showAsAction与appcompat库与xmlns:应用程序=”http://schemas.android.com/apk/res-auto“ –

8

使用android:showAsAction而不是app:showAsAction

而当错误Should use app:showAsAction with the appcompat library with xmlns:app="schemas.android.com/apk/res-auto显示我有一个建议压制,它的工作!

使用此行>>tools:ignore="AppCompatResource"并将xmlns:tools="http://schemas.android.com/tools"添加到顶部。

0

如果你的活动来延长AppCompatActivity和targetSdk是> 22,并且使用com.android.support:appcompat-v7确保你在你的XML使用方法:

app:showAsAction="ifRoom" 

,而不是

android:showAsAction="ifRoom" 

如果你使用android:showAsAction实际上被忽略,并且这些项目总是会进入溢出菜单。