Android利用EditText如何实现搜索框详解

EditText简介:

ED(EditText的简称)在开发中也是经常使用到的一个控件, 也是一个比较重要的组件,可以说它是用户跟应用进行数据传输的窗口,比如实现一个登陆界面, 需要用户输入账号和密码,然后我们开发者获取到用户输入的内容,提交给服务区进行判断再做相应的处理。

引言

新的app中有search的功能需要实现,就是一个输入框,输入文字后键盘出来搜索字样,然后点击搜索进行网络请求。之前掉坑里了,一直尝试用searchview来实现,但是自定义样式上实在是坑,最后发现其实EditText就可以实现,也是醉了。

SearchView的自定义样式

我还只实现了部分自定义,输入框那里底部的蓝色线条实在不知道怎么清除掉,有大神可以指教一下。

int search_mag_icon_id = sv_search.getContext().getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView search_mag_icon = (ImageView)sv_search.findViewById(search_mag_icon_id);//获取搜索图标
search_mag_icon.setImageResource(R.drawable.search_icon);//将图标的资源换掉即可。

其实就是找到searchView的资源文件,并替换掉就可以了。

同理,close图标也可以替换,只要修改"android:id/search_mag_icon" 为"android:id/search_close_btn"即可。

文本框的字体颜色大小等: "android:id/search_src_text"

不要问我怎么知道的,searchview源码里写的呀。需要注意的是,修改文本框颜色和大小的时候,需要将view cast to textview或者edittext,源码的配置文件里面这个框就是一个view,强转一下即可。

EditText实现SearchView功能

前面searchview里面,如果要将键盘的换行改成搜索,是要修改imeOptions的属性即可,而Edittext的属性里其实是有这个的,所以在edittext的布局中添加imeOptions = “actionSearch” ,但是只添加这个属性是无法实现的。

 <EditText
    android:inputType="text"
    android:singleLine="true"
    android:imeOptions="actionSearch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

其他的基础属性可以任意添加,再运行app发现输入文字后,换行确实换成搜索了。前三个属性一个都不能少。这样的话,我们只要在添加一个搜索的点击事件即可了:

et_earch.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
 if(actionId == EditorInfo.IME_ACTION_SEARCH){
//如果actionId是搜索的id,则进行下一步的操作
  doSomething() }
 return false; }
});

实现其中的onEditorAction方法即可。

剩下和searchView还不一样的就是没有close的按钮,其实监听一下edittext的输入就可以了,后续我就没做了,addTextChangedListener应该能实现,思路是:如果edittext里面有问题,则显示close的button,如果没有文字,则gone掉布局里面的close button。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Android EditText搜索框实现图标居中

    类似这样EditText 搜索框,hiht 提示有一个icon并且text内容. 重写EditText : package mobi.truekey.weapp2.widget; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.dr

  • Android 根据EditText搜索框ListView动态显示数据

    根据EditText搜索框ListView动态显示数据是根据需求来的,觉得这之中涉及的东西可能比较的有意思,所以动手来写一写,希望对大家有点帮助. 首先,我们来分析下整个过程: 1.建立一个layout,包含一个EditText搜索框和一个ListView 2.创建一个数据集mData,用于ListView的Adapter的创建 3.添加EditText的文本改变的监听器 4.利用notifyDataSetChanged()动态更新ListView 第一步:创建一个搜索框 这个还是比较容易的,这

  • Android 设置Edittext获取焦点并弹出软键盘

    Android 设置Edittext获取焦点并弹出软键盘 /** * EditText获取焦点并显示软键盘 */ public static void showSoftInputFromWindow(Activity activity, EditText editText) { editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); activity.getWind

  • Android中搜索图标和文字居中的EditText实例

    效果图: 需要自定义view,具体实现如下: import android.widget.EditText; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.drawable.Drawable; import android.uti

  • Android控件系列之EditText使用方法

    学习目的: 1.掌握在Android中如何建立EditText2.掌握EditText的常用属性3.掌握EditText焦点的事件.按键的事件(监听器) 介绍: EditText是接受用户输入信息的最重要控件.通过前面课程的学习,您可能会猜到可以利用EditText.getText()获取它的文本,但真正的项目中,可能没那么简单,需要更多的限制,如文本长度限制,是否数字限制等等. 鉴于手机屏幕尺寸有限,您可能总想着如何节约控件.在每个用户需要填写内容的文本框的左边加上标题在PC上是一种优雅的方法

  • Android定制自己的EditText轻松改变底线颜色

    最近做 android 项目遇到这个问题,为了保持 app 风格一致,需要将原生的EditText底线颜色改成橙色.网上搜了一些解决方案,特此记录总结一下. 效果图 默认的EditText底线颜色是蓝色的, 我们想实现橙色的效果 实现方法 1.准备两个背景图 一个作为 edittext 的默认背景 , 另一个作为 输入时候的背景 Note 使用 9.png, 不要用png, 否则图片会模糊, 花掉 在文件夹 drawable 用selector 建立一个xml 文件 <!-- drawable/

  • Android ListView用EditText实现搜索功能效果

    前言 最近在开发一个IM项目的时候有一个需求就是,好友搜索功能.即在EditText中输入好友名字,ListView列表中动态展示刷选的好友列表.我把这个功能抽取出来了,先贴一下效果图: 分析 在查阅资料以后,发现其实Android中已经帮我们实现了这个功能,如果你的ListView使用的是系统的ArrayAdapter,那么恭喜你,下面的事情就很简单了,你只需要调用下面的代码就可以实现了: searchEdittext.addTextChangedListener(new TextWatche

  • Android EditText实现关键词批量搜索示例

    今天在项目中用到了用到了一种特殊的EditText,当用户在EditText中输入内容,点击搜索按钮的时候,输入的内容能够高亮,然后添加到输入的容器中.删除的时候,能够将容器中的关键词逐一删除.附上代码: SearchEditText.java package com.jackie.searchresultedittext; import android.content.Context; import android.graphics.Color; import android.util.Att

  • Android中EditText显示明文与密码的两种方式

    效果图如下所述: 布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pa

  • Android更改EditText下划线颜色样式的方法

    前言 相信大家都知道,当使用AppCompatEditText(Edit Text)时,默认的下划线是跟随系统的#FF4081的颜色值的,通过改变这个值可以改变所有的颜色样式 有时候你想单独定义某一个界面的颜色样式,则可以这样做: 1.在你的build.gradle中添加最新的appcompat库 dependencies { compile 'com.android.support:appcompat-v7:X.X.X' // X.X.X 为最新的版本号 } 2.让你的activity继承an

随机推荐