SearchView的使用说明

来源:互联网 发布:崩坏3矩阵空间攻略 编辑:程序博客网 时间:2024/05/22 06:25

先上代码日后再仔细说明

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>
原创粉丝点击