先上代码日后再仔细说明
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>