[Android]文本框实现搜索和清空效果
生活随笔
收集整理的這篇文章主要介紹了
[Android]文本框实现搜索和清空效果
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
本文實現的效果:文本框輸入為空時顯示輸入的圖標;不為空時顯示清空的圖標,此時點擊清空圖標能清空文本框內輸入文字。
?
?
聲明
歡迎轉載,但請保留文章原始出處:)
?
農民伯伯:http://over140.blog.51cto.com/
?
正文
一、實現效果
?
?
二、實現代碼
?
監聽輸入
????/**?????*?動態搜索
?????*/
????private?TextWatcher?tbxSearch_TextChanged?=?new?TextWatcher()?{
????????//緩存上一次文本框內是否為空
????????private?boolean?isnull?=?true;
????????@Override
????????public?void?afterTextChanged(Editable?s)?{
????????????if?(TextUtils.isEmpty(s))?{
????????????????if?(!isnull)?{
????????????????????mSearchView.setCompoundDrawablesWithIntrinsicBounds(null,
????????????????????????????null,?mIconSearchDefault,?null);
????????????????????isnull?=?true;
????????????????}
????????????}?else?{
????????????????if?(isnull)?{
????????????????????mSearchView.setCompoundDrawablesWithIntrinsicBounds(null,
????????????????????????????null,?mIconSearchClear,?null);
????????????????????isnull?=?false;
????????????????}
????????????}
????????}
????????@Override
????????public?void?beforeTextChanged(CharSequence?s,?int?start,?int?count,
????????????????int?after)?{
????????}
????????/**
?????????*?隨著文本框內容改變動態改變列表內容
?????????*/
????????@Override
????????public?void?onTextChanged(CharSequence?s,?int?start,?int?before,
????????????????int?count)?{
????????????
????????}
????};
? 觸摸事件
????private?OnTouchListener?txtSearch_OnTouch?=?new?OnTouchListener()?{????????@Override
????????public?boolean?onTouch(View?v,?MotionEvent?event)?{
????????????switch?(event.getAction())?{
????????????case?MotionEvent.ACTION_UP:
????????????????int?curX?=?(int)?event.getX();
????????????????if?(curX?>?v.getWidth()?-?38
????????????????????????&&?!TextUtils.isEmpty(mSearchView.getText()))?{
????????????????????mSearchView.setText("");
????????????????????int?cacheInputType?=?mSearchView.getInputType();//?backup??the?input?type
????????????????????mSearchView.setInputType(InputType.TYPE_NULL);//?disable?soft?input
????????????????????mSearchView.onTouchEvent(event);//?call?native?handler
????????????????????mSearchView.setInputType(cacheInputType);//?restore?input??type
????????????????????return?true;//?consume?touch?even
????????????????}
????????????????break;
????????????}
????????????return?false;
????????}
????};
綁定事件
????private?Drawable?mIconSearchDefault;?//?搜索文本框默認圖標????private?Drawable?mIconSearchClear;?//?搜索文本框清除文本內容圖標
????@Override
????protected?void?onCreate(Bundle?savedInstanceState)?{
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.main)
????????
????????final?Resources?res?=?getResources();
????????mIconSearchDefault?=?res.getDrawable(R.drawable.txt_search_default);
????????mIconSearchClear?=?res.getDrawable(R.drawable.txt_search_clear);
????????
????????mSearchView?=?(EditText)?findViewById(R.id.txtSearch);
????????mSearchView.addTextChangedListener(tbxSearch_TextChanged);
????????mSearchView.setOnTouchListener(txtSearch_OnTouch);
????}
代碼說明:
1. 為輸入框綁定觸摸事件(模擬點擊事件捕捉)。通過監聽點擊區域判斷是否點擊清空圖片,如果在該區域并且文本框不為空,則清空文本框。
?
2. 為輸入框綁定文本改變事件監聽,根據內容改變動態設置圖標顯示。
3. 維持清空操作后軟鍵盤狀態。
?
三、參考
1.? how to block virtual keyboard while clicking on edittext in android?
?
四、小圖標下載
(右鍵另存為即可。)
?
結束
?
活用好每一個控件的屬性、方法和事件能實現很多有意思的效果。歡迎大家交流。
?
轉載于:https://blog.51cto.com/over140/581678
總結
以上是生活随笔為你收集整理的[Android]文本框实现搜索和清空效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA与.NET的相互调用——通过We
- 下一篇: Android开发学习笔记(二)——编译