机器人 - 如何添加搜索视图以自定义动作条自定义、视图、机器人、动作

2023-09-12 03:26:18 作者:莪説,只娶伱

我使用的是自定义的动作条我的应用程序。 这是code:

I'm using a custom actionbar for my application . This is the code:

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的默认搜索视图搜索查看(我的意思是一样的菜单上的搜索图标,当点击它,它变成一个EditText上)

I want to use a searchview like android's default search view ( I mean like the search icon on the menu that when click on it, it turns into a edittext )

我如何添加一个搜索查看到我的自定义动作条?

How can I add a searchview to my custom actionbar ?

推荐答案

使用这个小部件自定义布局

Use this widget in custom layout

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