Android用EditText实现搜索框

作者: 5234d03a2502 | 来源:发表于2016-04-25 17:30 被阅读8871次
    Android.jpg

    前言

    新的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。

    over。

    相关文章

      网友评论

      本文标题:Android用EditText实现搜索框

      本文链接:https://www.haomeiwen.com/subject/xbcqrttx.html