android searchView 去掉默认下划线 改为圆角搜索框
来源:互联网 发布:李连杰新加坡知乎 编辑:程序博客网 时间:2024/04/29 16:23
客户要实现一个圆角的搜索框,我想着5分钟就可以搞定了,于是开始码
1、先定义搜索框
<SearchView android:id="@+id/sv_cus" android:layout_width="match_parent" android:layout_height="wrap_content" android:iconifiedByDefault="false" android:background="@drawable/searchview_line" android:queryHint="请输入姓名" />
2.然后定义一个资源文件 searchview_line.xml 来设置搜索框的样式
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- 表示shape的四个角的角度。只适用于矩形shape,这里的角度是指圆角的程度 --> <corners android:radius="50dp" /> <!-- 这个标签表示纯色填充,通过android:color即可指定shape中填充的颜色 --> <solid android:color="@color/white" /> <!-- Shape的描边,下面指定了描边的宽度和描边的颜色 --> <stroke android:width="1dp" android:color="#d9d9d9" /></shape>
3.在后台获取到搜索框,并定义搜索的监听
svCustomer = (SearchView) findViewById(R.id.cus);
// 设置搜索文本监听 svCustomer.setOnQueryTextListener(new SearchView.OnQueryTextListener() { // 当搜索内容改变时触发该方法 @Override public boolean onQueryTextChange(String newText) { if (!TextUtils.isEmpty(newText)){// mListView.setFilterText(newText); }else{ DataKit.searchParams.setSearchKey(""); search(); } return false; } @Override public boolean onQueryTextSubmit(String queryText) { if (svCustomer != null) { // 得到输入管理对象 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { // 这将让键盘在所有的情况下都被隐藏,但是一般我们在点击搜索按钮后,输入法都会乖乖的自动隐藏的。 imm.hideSoftInputFromWindow(svCustomer.getWindowToken(), 0); // 输入法如果是显示状态,那么就隐藏输入法 } DataKit.searchParams.setSearchKey(queryText); svCustomer.clearFocus(); // 不获取焦点 search(); } return true; } });
结果效果竟然是圆角与下划线并存,虽然搜索功能实现了,但样式好丑啊
于是我就去查搜索框的属性,也没找到它有设置下划线这个属性呀,就去百度了一下,原来需要动态改变一下
if (svCus != null) {
try { //--拿到字节码
Class<?> argClass = svCustomer.getClass();
//--指定某个私有属性,mSearchPlate是搜索框父布局的名字
Field ownField = argClass.getDeclaredField("mSearchPlate");
//--暴力反射,只有暴力反射才能拿到私有属性
ownField.setAccessible(true);
View mView = (View) ownField.get(svCus);
//--设置背景
mView.setBackgroundResource(R.drawable.searchview_line);
}
catch (Exception e) {
e.printStackTrace();
}
}
然后去掉布局文件中设置的那个 背景
<SearchView android:id="@+id/sv_cus" android:layout_width="match_parent" android:layout_height="wrap_content" android:iconifiedByDefault="false" //这一行去掉啦 android:queryHint="请输入姓名" />效果就出来啦
- android searchView 去掉默认下划线 改为圆角搜索框
- SearchView去掉下划线
- 修改SearchView搜索框的下划线.(或着其他属性)
- Android中的searchView去掉前面的搜索圈
- 修改SearchView默认搜索图标
- Android学习笔记(29):搜索框SearchView
- android EditText去掉下划线
- SearchView搜索框
- 搜索框(SearchView)详解
- SearchView搜索框
- SearchView--搜索框案例
- 自定义搜索框searchview
- android searchview默认展开状态
- android actionbar searchview搜索提示
- android actionbar searchview搜索提示
- android4.0 SearchView去掉(修改)搜索框的背景 修改光标
- Android中的搜索框(SearchView)的功能和用法
- 一个最简单的基于Android SearchView的搜索框
- APK安装后在桌面的图标列表里不显示/显示的方法
- 基于Docker搭建一个Go-ethereum节点(下)
- Java 动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
- mysq 分组统计 avg分组统计
- java并发:同步容器&并发容器
- android searchView 去掉默认下划线 改为圆角搜索框
- HttpClient get请求取消自动重定向,并获取重定向的地址。
- js-MD5加密,JavaScript-MD5加密
- ASP.NET Core Web API get方法获取多个值
- PAT 1129
- Android 高级动画实现方案
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转)
- WebRTC编译
- 将Eclipse Android项目打包成APK文件