【问题标题】:SearchView doesn't appear in Toolbar - Android LollipopSearchView 没有出现在工具栏中 - Android Lollipop
【发布时间】:2015-01-29 09:20:25
【问题描述】:

我在以下 Activity 中有这个工具栏:

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_select_currency"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"/>

菜单也声明在:

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

<item android:id="@+id/search"
      android:title="@string/search_currency"
      android:icon="@drawable/ic_action_search"
      android:showAsAction="collapseActionView|ifRoom"
      android:actionViewClass="android.support.v7.widget.SearchView"/>

</menu>

在我调用的活动中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.currency_selector_options_menu, menu);

    return true;
}

private void initActionBar() {
    // Initialize the Toolbar( this is the new ActionBar in Lollipop)
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_select_currency);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(getString(R.string.select_currency));
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

现在我的问题是我没有像在普通 ActionBar 中那样获得 SearchView,我得到的是普通菜单。如何获得正常的 SearchView ?

【问题讨论】:

标签: android android-5.0-lollipop


【解决方案1】:

使用您的应用命名空间:

xmlns:myapp="http://schemas.android.com/apk/res-auto"

myapp:showAsAction="always"

解释: 由于您使用的是旧 android 版本的支持库并且它不包含在 sdk 中,因此 android 命名空间不包含 showAsAction 属性,而是包含在您链接到项目的支持库中,所以要达到该属性,您必须使用您的应用命名空间

【讨论】:

  • 谢谢先生。这对我有用。如果您能向我解释该自定义命名空间的作用以及为什么它不能与“android”一起使用,那将非常有帮助?