效果如图:
一、xml布局
<!--搜索视图-->
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:background="@drawable/search_bg_style">
<LinearLayout
android:orientation="horizontal"
android:padding="3dp"
android:layout_width="350dp"
android:layout_height="wrap_content"
android:background="@drawable/search_style"
android:layout_margin="5dp">
<!--搜索框-->
<SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:queryBackground="@null"/><!--取消下划线-->
<!--按钮-->
<Button
android:id="@+id/searchBtn"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="4"
android:textColor="@color/textColor"
android:textSize="24sp"
android:text="搜索"
android:background="@android:color/transparent"/><!--按钮背景透明-->
</LinearLayout>
</LinearLayout>
style布局
@drawable/search_bg_style.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F0F1F5"/>
<corners android:radius="5dp" />
</shape>
@drawable/search_style.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#1296DB" />
<corners android:radius="20dp" />
</shape>
二、java代码
// 搜索框
searchView = findViewById(R.id.searchView);
// 点击search进入输入内容状态(不仅仅点击方大镜图标)
searchView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchView.onActionViewExpanded();
}
});
searchView.setOnQueryTextListener(searchQuery);
// 搜索按钮
searchBtn = findViewById(R.id.searchBtn);
searchBtn.setOnClickListener(this);
/**
* 搜索框监听事件
* */
SearchView.OnQueryTextListener searchQuery = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//文字提交的时候哦回调,newText是最后提交搜索的文字
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//在文字改变的时候回调,query是改变之后的文字
return false;
}
};
/*------------------ SearchView有三种默认展开搜索框的设置方式,区别如下: ------------------*/
//设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框
mSearchView.setIconified(false);
//设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框
mSearchView.setIconifiedByDefault(false);
//设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框
mSearchView.onActionViewExpanded();