可以利用Action Bar部件提供的全部功能,将你的选项菜单项放在Action Bar的右上角,对用户来说使用更方便,控制该行为的主菜单项属性是android:showAsAction。
这个属性可接受的值有:
1、always:这个值会使菜单项一直显示在Action Bar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
3、never:这个值使菜单项永远都不出现在Action Bar上。
这个属性可接受的值有:
1、always:这个值会使菜单项一直显示在Action Bar上。
2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
3、never:这个值使菜单项永远都不出现在Action Bar上。
4、withText:这个值使菜单项和它的图标,菜单文本一起显示。
<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=".MainActivity"> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" /> <item android:id="@+id/action_remove" android:title="Remove" app:showAsAction="ifRoom" /> <item android:id="@+id/action_add" android:title="Add" app:showAsAction="always" /> <item android:id="@+id/action_nothing" android:title="nothing" app:showAsAction="withText" /> </menu>
使用的是android.support.v7.app.ActionBarActivity,所以在xml文件里,应该把android:showAsAction换成app:showAsAction。
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.menu_main, menu); return true;//表示允许创建的菜单显示出来,return false则无法显示 } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_add: Toast.makeText(this, "add click", Toast.LENGTH_SHORT).show(); break; case R.id.action_nothing: Toast.makeText(this, "nothing click", Toast.LENGTH_SHORT).show(); break; case R.id.action_remove: Toast.makeText(this, "remove click", Toast.LENGTH_SHORT).show(); break; case R.id.action_settings: Toast.makeText(this, "settings click", Toast.LENGTH_SHORT).show(); break; } return true; } }忘写case后的break;作死