• Android 监听EditView中的文本改变事件


    android中的编辑框EditText也比较常用,那比如在搜索框中,没输入一个字,下面的搜索列表就显示有包含输入关键字的选项,这个输入监听怎么实现的呢?

    我们可以建一个例子,效果图如下:

    我们可以监听光标处在哪个位置,选择了几个字符并处理,输入了几个字符

    先新建布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:background="@drawable/af">
    
        <!-- 上下滚动 -->
    
        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical" >
    
                <!-- 编辑框 -->
    
                <EditText
                    android:id="@+id/id_edittext_1"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" 
                    android:background="@drawable/alert_light"
                    android:textSize="10sp"
                    android:textColor="#ffff"
                    />
                
                <TextView 
                    android:id="@+id/id_textview"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" 
                    android:textColor="#ffff"
                    />
                
                <TextView 
                    android:id="@+id/id_textview_1"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" 
                    android:background="@drawable/hah"
                    android:textColor="#f000"
                    />
                
                <TextView 
                    android:id="@+id/id_textview_2"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" 
                    android:background="@drawable/hah"
                    android:textColor="#f000"
                    />
                
            </LinearLayout>
        </ScrollView>
    
    </LinearLayout>

    然后在代码中对编辑框绑定输入监听事件:

    public class EditTextTestActivity extends Activity {
        /**编辑框*/
        private EditText edit1_;
        /**文本*/
        private TextView text_;
        private TextView text1_;
        private TextView text2_;
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            /*设置当前页面的布局*/
            setMyLayout();
        }
        
        /**
         * 设置当前页面的布局
         */
        private void setMyLayout(){
            /*取得文本*/
            text_ = (TextView)findViewById(R.id.id_textview);
            text1_ = (TextView)findViewById(R.id.id_textview_1);
            text2_ = (TextView)findViewById(R.id.id_textview_2);
            
            /*取得编辑框*/
            edit1_ = (EditText)findViewById(R.id.id_edittext_1);
            /*监听 编辑框中的文本改变事件*/
            edit1_.addTextChangedListener(new TextWatcher() {
                
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    /*++ 文本每次改变就会跑这个方法 ++*/
                    if(null != text_){
                        text_.setText("您正在输入......
    当前光标处在第 " + start
                                +" 个位置
    您选择处理了 " + before + " 个字符
    您这次输入的词语有 "
                                + count + " 个字符");
                    }
                    
                }
                
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                                int after) {
                    /*++这里的count树枝上是和onTextChanged()里的before一样的
                     * after树枝上是和onTextChanged()里的count一样的 ++*/
                    if(null != text1_){
                        text1_.setText("您正在输入......
    当前光标处在第 " + start
                                +" 个位置
    您选择处理了 " + count + " 个字符
    您这次输入的词语有 "
                                + after + " 个字符");
                    }
                }
                
                @Override
                public void afterTextChanged(Editable s) {
                    /*++这里显示出输入的字符串++*/
                    if(null != text2_){
                        text2_.setText(s);
                    }
                }
                
        });
    
        }
    }

    源代码:http://download.csdn.net/detail/zoeice/4399601

  • 相关阅读:
    时间差的计算
    时间差的计算第二篇
    并不能完全不编码完成Windows Service的安装和卸载
    今年是搜索引擎年吗?热!搜索引擎算法点击率火爆
    Virtual PC,我真的不敢用你!
    我理解的17种C#写的Hello World程序
    反搜索引擎
    如何保证Windows Serverice健壮长效运转?
    服务器是怎么做成的?
    超酷的超级DataGrid
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4262935.html
Copyright © 2020-2023  润新知