android-如何将搜索视图添加到自定义操作栏

时间:2014-12-16 05:21:50

标签: android android-actionbar android-custom-view android-actionbar-compat

我正在为我的应用程序使用自定义操作栏。 这是代码:

private void actionbar() {
    ActionBar actionBar = getSupportActionBar();
    LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View mCustomView = layoutInflater.inflate(R.layout.actionbar, null);

    ImageView nDrawer=(ImageView)mCustomView.findViewById(R.id.imageView4);
    nDrawer.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            DrawerActivity.open();              
        }
    });

    ///search

    actionBar.setCustomView(mCustomView);
    actionBar.setDisplayShowCustomEnabled(true);
    getSupportActionBar().setDisplayShowCustomEnabled(true);
     actionBar.setDisplayShowTitleEnabled(false);
     actionBar.setDisplayHomeAsUpEnabled(true);
     actionBar.setDisplayUseLogoEnabled(false);
     actionBar.setDisplayShowHomeEnabled(false);
     actionBar.setHomeButtonEnabled(true);
     actionBar.setIcon(null);
}

这是xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/menubg"
    android:paddingLeft="3dp"
    android:paddingRight="3dp" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_action_search" />
</RelativeLayout>

我想使用像android这样的默认搜索视图的搜索视图(我的意思是菜单上的搜索图标,点击它时会变成编辑文本)

如何将搜索结果添加到自定义操作栏?

1 个答案:

答案 0 :(得分:-1)

在自定义布局中使用此小部件

<android.support.v7.widget.SearchView
        android:suggestionRowLayout="@layout/suggestion_row_layout"
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:iconifiedByDefault="false"
        android:inputType="textFilter"/>

而不是:

    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        mSearchModeOn = true;
        mSearchMenu.setVisible(false);
        final View searchViewContainer = LayoutInflater.from(actionBar.getThemedContext())
                .inflate(R.layout.custom_action_bar, null);
        actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back_black_24dp);
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
        mSearchView = (SearchView) searchViewContainer.findViewById(R.id.search_view);

        mSearchView.setIconifiedByDefault(true);
        mSearchView.setQueryHint(getString(R.string.btSearch));
        mSearchView.setIconified(false);

        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        mSearchView.setOnQueryTextListener(this);
        mSearchView.setOnCloseListener(this);
        mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        actionBar.setCustomView(searchViewContainer,
                new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
                        ActionBar.LayoutParams.WRAP_CONTENT));
        actionBar.setDisplayShowCustomEnabled(true);