SearchView的使用说明

先上代码日后再仔细说明

package com.lqr.materialdesigndemo;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

import java.lang.reflect.Method;

/**
 * Created by chenmeng on 2017/6/19.
 */

public class TestSearchView extends Activity {
    private Button cloase_search;////onSearchClicked()
    private Button open_search;
    private SearchView mSearchView;
    private SearchView.SearchAutoComplete mSearchAutoComplete;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test_search_view);
        mSearchView = (SearchView) findViewById(R.id.search_view);
        cloase_search = (Button) findViewById(R.id.cloase_search);
        open_search = (Button) findViewById(R.id.open_search);
        initSearch();
        mSearchView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!mSearchAutoComplete.isShown()) {
                    try {
//                        mSearchAutoComplete.setText("");
                        Method method = mSearchView.getClass().getDeclaredMethod("onSearchClicked");
                        method.setAccessible(true);
                        method.invoke(mSearchView);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        open_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!mSearchAutoComplete.isShown()) {
                    try {
//                        mSearchAutoComplete.setText("");
                        Method method = mSearchView.getClass().getDeclaredMethod("onSearchClicked");
                        method.setAccessible(true);
                        method.invoke(mSearchView);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        cloase_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mSearchAutoComplete.isShown()) {
                    try {
                        mSearchAutoComplete.setText("");
                        Method method = mSearchView.getClass().getDeclaredMethod("onCloseClicked");
                        method.setAccessible(true);
                        method.invoke(mSearchView);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    ImageView mSearchButton;
    ImageView mCollapsedIcon;

    private void initSearch() {
        mSearchAutoComplete = (SearchView.SearchAutoComplete) findViewById(R.id.search_src_text);
        mSearchView.setQueryHint("搜索本地歌曲");

        //设置输入框提示文字样式
        mSearchAutoComplete.setHintTextColor(getResources().getColor(android.R.color.darker_gray));
        mSearchAutoComplete.setTextColor(getResources().getColor(android.R.color.background_dark));
        mSearchAutoComplete.setTextSize(14);
        //设置触发查询的最少字符数(默认2个字符才会触发查询)
        mSearchAutoComplete.setThreshold(1);

        //设置搜索框有字时显示叉叉,无字时隐藏叉叉
        mSearchView.onActionViewExpanded();
        mSearchView.setIconified(true);

        //修改搜索框控件间的间隔(这样只是为了更加接近网易云音乐的搜索框)
        LinearLayout search_edit_frame = (LinearLayout) mSearchView.findViewById(R.id.search_edit_frame);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) search_edit_frame.getLayoutParams();
        params.leftMargin = 0;
        params.rightMargin = 0;
        search_edit_frame.setLayoutParams(params);

        //监听SearchView的内容
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String s) {

//                Cursor cursor = TextUtils.isEmpty(s) ? null : queryData(s);

//                if (mSearchView.getSuggestionsAdapter() == null) {
//                    mSearchView.setSuggestionsAdapter(new SimpleCursorAdapter(SearchViewActivity2.this, R.layout.item_layout, cursor, new String[]{"name"}, new int[]{R.id.text1}));
//                } else {
//                    mSearchView.getSuggestionsAdapter().changeCursor(cursor);
//                }
//                setAdapter(cursor);

                return false;
            }
        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
   <Button
       android:id="@+id/cloase_search"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="关闭搜索"
       />
    <Button
        android:id="@+id/open_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打开搜索"
        />
    <android.support.v7.widget.SearchView
        android:background="@color/red"
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        style="@style/Widget.SearchView"
        ></android.support.v7.widget.SearchView>
</LinearLayout>

style:

    <style name="Widget.SearchView" parent="Widget.AppCompat.SearchView">
        <item name="defaultQueryHint">搜索本地歌曲</item>
        <item name="searchIcon">@mipmap/m5</item>
        <item name="searchHintIcon">@null</item>
    </style>

猜你喜欢

转载自blog.csdn.net/chenmeng911/article/details/73467618