无法将Button添加到Android ActionBar API 21

时间:2015-03-24 15:01:20

标签: java android android-actionbar

我想在我的Android ActionBar中添加一个搜索按钮,为此,我按照this回答。唯一发生的事情是"搜索"按钮被添加到菜单本身而不是ActionBar(见下面的截图)。

Screenshot

这是我的search.java(显示搜索按钮的活动):

public class search extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_search);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.menu_search, menu);
    return super.onCreateOptionsMenu(menu);
}

@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();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

这是我的menu_search.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:title="search"
    android:id="@+id/action_search"
    android:icon="@drawable/searchicon"
    android:orderInCategory="100"
    android:showAsAction="always"/>
</menu>

任何帮助都是相关的!提前谢谢!

2 个答案:

答案 0 :(得分:1)

您正在使用appcompat-v7。您需要将android:showAsAction属性更改为app:showAsAction属性,并定义app命名空间(xmlns:app="http://schemas.android.com/apk/res-auto")。

这会给你类似的东西:

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

此外,您可能不需要android:orderInCategory

答案 1 :(得分:0)

你应该做的是添加:

<?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/action_search"
    android:title="search"
    app:showAsAction="always"
    android:actionViewClass="android.widget.SearchView"/>