`
李陵杰
  • 浏览: 1170 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

[Android]文本框实现搜索和清空效果

阅读更多
http://www.cnblogs.com/over140/archive/2011/04/25/2026812.html
前言

  本文实现的效果:文本框输入为空时显示输入的图标;不为空时显示清空的图标,此时点击清空图标能清空文本框内输入文字。



声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com

    农民伯伯: http://over140.cnblogs.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?



  四、小图标下载

      

    (右键另存为即可。)



结束

  活用好每一个控件的属性、方法和事件能实现很多有意思的效果。欢迎大家交流。
分享到:
评论

相关推荐

    Android文本框搜索和清空效果实现代码及简要概述

    通过以上代码,我们就实现了Android文本框的搜索和清空效果。用户在输入时会看到清空图标,点击清空图标则会清除文本,同时恢复默认的搜索图标。这个功能在搜索框、过滤输入等场景中非常常见,能显著提升应用的交互...

    Android EditText 带清空按钮

    本文将详细介绍如何在Android应用中实现这样一个带有清空按钮功能的`EditText`。 首先,我们需要在布局XML文件中定义`EditText`和一个用于清空文本的按钮。按钮通常会作为`EditText`的右端图标显示。以下是一个简单...

    在android上实现仿照iOS搜索栏 居中效果,点击到最左边的demo eclipse项目

    在Android平台上,实现一个仿照iOS风格的搜索栏居中效果并支持点击到最左边的功能,需要对Android的UI设计和事件处理有深入的理解。这个"Eclipse"项目提供了这样一个示例,让我们一起探讨如何实现这样的功能。 首先...

    安卓Android源码——文本框可输入字符数量源码.zip

    在安卓(Android)开发中,有时我们需要限制用户在EditText文本框中输入的字符数量,以...通过理解和运用这些知识点,开发者可以轻松地在自己的Android应用中实现对EditText字符输入的限制,提供更符合需求的用户界面。

    Android应用源码之文本框可输入字符数量源码-IT计算机-毕业设计.zip

    在Android应用开发中,文本框(EditText)是用户交互的重要组成部分,它允许用户输入文本数据。这个"Android应用源码之文本框可输入字符数量源码"是一个针对毕业设计学习的示例项目,旨在教授如何限制用户在文本框中...

    安卓Android源码——自动清空edittext.zip

    这个压缩包“安卓Android源码——自动清空edittext.zip”似乎包含了一些与自定义`EditText`组件相关的源代码和资源文件,目的是在用户完成输入后自动清空文本框的内容,以提供更好的用户体验。 首先,我们来讨论...

    删除输入框的文字

    在Android开发中,"删除输入框的文字"是一个常见的功能需求,尤其在用户输入后需要提供一个便捷的方式来清除已输入的...通过分析和学习这个Demo,开发者可以更好地理解如何在Android应用中实现文本框的删除文字功能。

    自动清空edittext_android源码.zip

    然而,有时候我们需要实现一个功能,即当用户在EditText中输入完毕后,文本框自动清空,以准备下一次输入。这个功能在一些特定场景下非常有用,比如密码输入、搜索框等。下面我们将深入探讨如何实现这一功能,并结合...

    Android帮助文档及一些资料打包放送

    [Android]文本框实现搜索和清空效果 - 农民伯伯 - 博客园.mht380.75 KB 新浪微博布局学习——活用RelativeLayout - 农民伯伯 - 博客园.mht453.32 KB Android 3.0 r1 API中文文档(113) ——SlidingDrawer ....

    android sqlite数据库实现登录注册功能

    本教程将详细讲解如何利用SQLiteOpenHelper和SQLiteDatabase类来实现登录注册功能,以及如何处理UI元素如按钮和文本框的焦点事件。 首先,我们需要创建一个SQLiteOpenHelper的子类,这个子类将负责数据库的创建和...

    Android清空编辑框内容功能的实现实例代码

    在项目开发中你肯定会遇到这样的需求,输入到EditText中的数据一个一个清理太麻烦了,需要有一个按钮直接能实现一次删除整个EditText控件中的数据,那么接下来我就给大家封装一个方法,有这样的需求直接调用就好了。...

    实例2_文本框_文本输入.rar_文本输入

    在IT领域,文本输入是用户与...综上所述,"实例2_文本框_文本输入.rar"这个压缩包很可能包含了一个演示如何在应用程序中实现这些特性的实例,通过学习和研究这个例子,开发者可以更好地理解和掌握文本输入控件的使用。

    Android计算器界面及功能实现

    在Android开发领域,创建一个计算器应用是初学者和专业开发者常进行的实践项目。这个项目主要涉及使用Eclipse IDE、Android SDK以及Java编程语言。本文将深入探讨如何设计并实现一个具有基本加减乘除功能的Android...

    android计算器源代码【原创】

    开发者通过XML文件定义按钮、文本框等组件,然后在Java代码中为这些组件添加事件监听器,实现点击按钮进行计算的功能。 Android应用的生命周期是理解其工作原理的关键。计算器应用会有不同的活动(Activity)状态,...

    D-左边图片的文本框,当文字输入时改变图片,模仿微博登录框

    在Android开发中,创建一个具有特定交互效果的用户界面是一项重要的任务。本示例中,我们关注的是一个名为"D-左边图片的文本框,当文字输入时改变图片,模仿微博登录框"的设计,它主要用于登录界面,特别是社交媒体...

    android开发基础问题与解决办法

    - **实现方法**:通过设置`android:columnWidth`和`android:numColumns`属性来自定义每一列的宽度以及显示的列数。例如: ```xml android:id="@+id/gridView" android:layout_width="match_parent" android:...

    Android计算器(java)

    这里包括了按钮、文本框等视图元素的大小、位置和属性设置。使用`<Button>`标签创建按钮,通过`android:text`属性设置按钮文字,`android:onClick`指定点击事件处理函数。 8. **运行与调试**:完成代码编写后,可以...

    Android Studio实现简单计算器功能

    本文实例为大家分享了Android Studio实现简单计算器功能的具体代码,供大家参考,具体内容如下 程序步骤: (1)在布局文件定义一些计算器界面的文本框,按钮等组件。 (2)在Activity中获取组件实例。 (3)通过...

Global site tag (gtag.js) - Google Analytics