`
ychengIT
  • 浏览: 15681 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

EditText 的应用

 
阅读更多
1、EditText 编辑框赋值:
editText.setText(); 默认情况下,赋值后,光标在文字的最前面,
editText.clearFocus(); 加上这一句后,就可以将光标移到文字的最后。

2、显示、隐藏键盘,代码如下:
btn_hide = (Button) findViewById(R.id.btn_hide);
btn_show = (Button) findViewById(R.id.btn_show);
edit = (EditText) findViewById(R.id.edit);
final InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
btn_hide.setOnClickListener(new Button.OnClickListener(){
    @Override
    public void onClick(View arg0) {
        imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);//隐藏软键盘   
    }
});
btn_show.setOnClickListener(new Button.OnClickListener(){
    @Override
    public void onClick(View arg0) {
        if(edit != null){
            imm.showSoftInput(edit, 0); //显示软键盘 
        }
    }
});

3、获取enter回车键事件
edit = (EditText) findViewById(R.id.edit);
        
edit.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View view, int keyCode, KeyEvent event) {
        if((event.getAction()== KeyEvent.ACTION_DOWN)&& (keyCode== KeyEvent.KEYCODE_ENTER)){ 
            return true; 
        } 
        return false; 
    }
});

4、EditText 有一个属性可以定义输入字符的顺序
android:gravity="right"  --->  实现从右往左输入
android:gravity="left"   --->  实现从左往右输入

5、实现编辑框不可编辑
if (value) {
    editText.setFilters(new InputFilter[] { new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start,int end, Spanned dest, int dstart, int dend) {
            return source.length() < 1 ? dest.subSequence(dstart, dend): "";
        }
    } });
} else {
    editText.setFilters(new InputFilter[] { new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start,int end, Spanned dest, int dstart, int dend) {
            return null;
        }
    } });
}

6、监听编辑框的change事件
editText01.addTextChangedListener(watcher);

final TextWatcher watcher = new TextWatcher(){
    @Override
    public void afterTextChanged(Editable s) {
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
    int after) {
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before,int count) {
        //如果输入的是大写,则将其转换成小写
        String str = editText01.getText().toString().toLowerCase().trim();
        if(str.equals("") || str == null){
            //隐藏控件
            lv.setVisibility(View.GONE);
            mLayout.setVisibility(View.GONE);
            mMakeText(getString(R.string.str_toast),true);
        } else {
            getWord(str);
        }
    }
};

7、点击编辑框,弹出键盘时,界面布局如何显示:
· 可以在AndroidManifest.xml的Activity设置属性 android:windowSoftInputMode=""
· 属性值说明如下:
"stateUnspecified":软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依赖于主题的设置。这个是为了软件盘行为默认的设置。

"stateUnchanged":软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时。

"stateHidden":当用户选择该Activity时,软键盘被隐藏——也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。

"stateAlwaysHidden":软键盘总是被隐藏的,当该Activity主窗口获取焦点时。

"stateVisible":软键盘是可见的,当那个是正常合适的时(当用户导航到Activity主窗口时)。

"stateAlwaysVisible":当用户选择这个Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该Activity时,而不是返回到它由于离开另一个Activity。

"adjustUnspecified":它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。
系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,
这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。

"adjustResize":该Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间

"adjustPan":该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到
输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
· 默认情况,当键盘弹出时,会将整个布局向上挤压,空出下方区域显示键盘,这种情况整个布局会被压变形,影响美观。
设置 "adjustPan" 平移模式,弹出键盘时,这个布局会上移,而不会被压缩。

8、编辑框自动获取焦点:
    edit_name.setFocusable(true);
    edit_name.setFocusableInTouchMode(true);
    edit_name.requestFocus();
9.Android:EditText限制文字输入
     Android的编辑框控件EditText在平常编程时会经常用到,有时候会对编辑框增加某些限制,如限制只能输入数字,最大输入的文字个数,不能输入一些非法字符等,这些需求有些可以使用android控件属性直接写在布局xml文件里,比如android:numeric="integer"(只允许输入数字);
     对于一些需求,如非法字符限制(例如不允许输入#号,如果输入了#给出错误提示),做成动态判断更方便一些,而且容易扩展;
     在Android里使用TextWatcher接口可以很方便的对EditText进行监听;TextWatcher中有3个函数需要重载:
    public void beforeTextChanged(CharSequence s, int start,
                                  int count, int after);
    public void onTextChanged(CharSequence s, int start, int before, int count);
    public void afterTextChanged(Editable s);
     从函数名就可以知道其意思,每当敲击键盘编辑框的文字改变时,上面的三个函数都会执行,beforeTextChanged可以给出变化之前的内容,onTextChanged和afterTextChanged给出追加上新的字符之后的文本;
所以对字符的限制判断可以在afterTextChanged函数中进行,如果检查到新追加的字符为认定的非法字符,则在这里将其delete掉,那么他就不会显示在编辑框里了:
private final TextWatcher mTextWatcher = new TextWatcher() {
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) {
    } 

    public void afterTextChanged(Editable s) {
        if (s.length() > 0) {
            int pos = s.length() - 1;
            char c = s.charAt(pos);
            if (c == '#') {
//这里限制在字串最后追加#
                s.delete(pos,pos+1);
                Toast.makeText(MyActivity.this, "Error letter.",Toast.LENGTH_SHORT).show();
            }
        }
    }
};
注册监听:
EditText mEditor = (EditText)findViewById(R.id.editor_input);
mEditor.addTextChangedListener(mTextWatcher);
 

 

分享到:
评论

相关推荐

    安卓EditText 应用实例

    在Android开发中,`EditText` 是一个非常基础且重要的组件,它允许用户输入文本并进行编辑。本示例主要关注如何实现对...在实际应用中,可以根据需求进一步定制`EditText`的行为,例如添加输入验证、格式化输入内容等。

    EditText焦点的自动跳转

    在Android开发中,`EditText`是用户界面中用于接收用户输入文本...需要注意的是,要根据实际应用场景选择合适的方法,并考虑到不同设备和输入方式的兼容性。在进行测试时,确保在各种情况下,焦点转移都能按预期工作。

    Android应用源码之自动清空edittext.zip

    在Android应用开发中,EditText是用户输入文本的常见组件,它允许用户在界面上输入、编辑和查看文本。本源码示例“Android应用源码之自动清空edittext.zip”着重关注如何实现EditText控件在特定条件或事件触发时自动...

    EditText监听输入完成

    本文将详细介绍如何在Android应用中实现`EditText`的输入完成监听。 首先,`EditText`本身提供了多种监听用户输入变化的接口。最常用的是`TextWatcher`,这是一个接口,包含了三个方法:`beforeTextChanged()`, `...

    Android高级应用源码-自动清空edittext.zip

    这个"Android高级应用源码-自动清空edittext.zip"提供的就是一个实现这一特性的示例代码。 源码的核心在于监听EditText的焦点变化事件,通常通过设置OnFocusChangeListener来实现。当EditText失去焦点时,我们可以...

    Android应用源码之5.EditText控件学习.zip

    在Android开发中,EditText控件是用户界面设计中不可或缺的一部分,它允许用户输入文本,广泛应用于登录、注册、编辑个人信息等各种场景。这份"Android应用源码之5.EditText控件学习.zip"的压缩包资料,很显然是为了...

    ListView+EditText混乱问题

    然而,这可能导致EditText的焦点和内容被错误地应用到复用的视图上。 解决这个问题通常有以下几种策略: 1. **保存和恢复状态**:在ListView的Adapter中,为每个列表项创建一个数据模型,包含EditText的所有必要...

    自定义editText

    描述中指出,这个自定义的EditText添加了删除按钮,允许用户一键清空所有输入的内容,并且可以全局引用,这意味着这个组件可以在应用程序的任何地方方便地使用。 EditText是Android系统中最基本的文本输入控件,...

    android的EditText的使用

    在Android开发中,`EditText`是用户输入文本的控件,它是`TextView`的一个子类,用于接收用户的文字输入并显示。本篇文章将详细讲解如何使用`EditText`,特别是涉及在给定的案例中,当用户在两个`EditText`中输入...

    android-EditText边框颜色

    当我们需要对`EditText`的外观进行自定义,特别是调整其边框颜色时,这通常是UI设计需求的一部分,使得应用界面更加美观和个性化。本教程将详细讲解如何在Android中改变`EditText`的边框颜色,适合初学者学习。 ...

    android listview带有editText

    然而,当在ListView的每一项中嵌套EditText时,会遇到一些挑战,主要包括EditText的焦点管理问题和数据错位问题。这两个问题在实际应用中是开发者经常需要解决的关键点。 首先,我们来看EditText的焦点问题。当用户...

    自定义牛逼的EditText特效输入框

    本项目名为“自定义牛逼的EditText特效输入框”,显然,它旨在提供一种独特且吸引人的EditText输入框效果,以提升应用的视觉吸引力和交互性。 首先,我们来探讨EditText的基础知识。EditText是Android SDK中的一个...

    EditText案例源码.zip

    EditText是Android SDK中一个非常关键的UI组件,它用于接收用户输入文本,是各种应用程序界面中不可或缺的部分。在Android应用设计中,无论是登录、注册、评论还是设置等场景,都需要用到EditText来获取用户的文字...

    android EditText禁止输入法表情

    接下来,我们需要在`EditText`中应用这个`InputFilter`: ```xml &lt;EditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType=...

    edittext失去焦点,收起键盘

    然而,在某些情况下,我们可能希望在用户点击应用中的其他非EditText视图时自动隐藏键盘,以优化用户体验或保持屏幕清洁。标题"edittext失去焦点,收起键盘"以及描述"如果点击的view,不为edittext,则收起键盘"都...

    Edittext限制字符数,可以限制最大和最小。

    综上所述,通过自定义`InputFilter`或者使用`TextWatcher`监听,我们可以在Android应用中实现对`EditText`字符数的限制,确保用户输入符合我们的业务需求。在实际开发中,可以根据项目需求灵活选择合适的方法。

    editText美化demo

    在Android应用开发中,UI设计是至关重要的,而EditText作为用户输入信息的控件,其样式和交互方式直接影响到用户体验。本示例"editText美化demo"主要关注于提升EditText的视觉效果,通过创建一个浮动标签的效果,使...

    EditText文字飞入

    在Android开发中,为用户提供丰富的视觉体验是提升应用吸引力的重要手段。"EditText文字飞入"是一种常见的动画效果,常用于输入框聚焦或者文字显示时,让文字以动态、酷炫的方式呈现,增加用户交互的趣味性。这个...

    安卓EditText输入框相关-开源一个EditText的轮播动画效果.rar

    在Android开发中,EditText是用户交互的一个重要组件,它允许用户输入文本,广泛应用于登录、注册、搜索等场景。这个开源项目"安卓EditText输入框相关-开源一个EditText的轮播动画效果"旨在提供一种创新的方式来增强...

    Android中EditText密码样式设置

    虽然与`EditText`的密码样式设置不是直接相关,但可以结合使用,例如,将显示/隐藏密码的设置保存在共享首选项(SharedPreferences)中,以便在应用重启后仍能保持用户的个性化选择。 总之,Android中的`EditText`...

Global site tag (gtag.js) - Google Analytics