如何在ActionBar(Android)中添加按钮?

Pon*_*ing 30 android button android-actionbar

我想将一个Button添加到Action栏的右侧,如此屏幕截图所示:

没有按钮的操作栏的屏幕截图. 标题是'示例'

我在onCreate方法中获取actionBar:

ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

和后退按钮(onOptionsItemSelected方法)如下:

public boolean onOptionsItemSelected(MenuItem item){
    Intent myIntent = new Intent(getApplicationContext(),MainActivity.class);
    startActivityForResult(myIntent, 0);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我该如何添加按钮?

Bla*_*elt 81

你必须在res/menu,覆盖内创建一个条目onCreateOptionsMenu并给它充气

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.yourentry, menu);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

菜单的条目可以是:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_cart"
        android:icon="@drawable/cart"
        android:orderInCategory="100"
        android:showAsAction="always"/> 
</menu>
Run Code Online (Sandbox Code Playgroud)

  • 我们可以改变按钮的位置吗?我是极右翼的.我可以在中心吗? (7认同)

Goo*_*gle 18

活动在其onCreateOptionsMenu()方法中填充ActionBar .

而不是使用setcustomview(),只是onCreateOptionsMenu像这样覆盖:

@Override    
public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.mainmenu, menu);
  return true;
}
Run Code Online (Sandbox Code Playgroud)

如果选择ActionBar中的操作,onOptionsItemSelected()则调用该方法.它接收所选操作作为参数.根据这些信息,您的代码可以决定做什么,例如:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case R.id.menuitem1:
      Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT).show();
      break;
    case R.id.menuitem2:
      Toast.makeText(this, "Menu item 2 selected", Toast.LENGTH_SHORT).show();
      break;
  }
  return true;
}
Run Code Online (Sandbox Code Playgroud)