UI控件之编辑文本控件EditText

这篇博客详细介绍了EditText控件的多种用法,包括设置默认提示文本、焦点后全选文本、限制输入类型、行数控制、文本间隔、边距调整、自动弹出小键盘、光标控制及带表情和删除按钮的实现。通过实例展示了EditText在实际开发中的应用。

(一)概述
EditText是除了TextView控件之外的属性,还可以实现输入文本内容。
(二)实际开发中的应用

N0.1 —–设置默认提示文本
常用的用户登录界面相信大家都很熟悉吧,就像这样:
这里写图片描述
默认提示文本的俩个属性,如下:
这里写图片描述 hint用于设置默认提示的文本,textColorHint用于设置提示文本的颜色;

No.2 —-获得焦点后全选组件内所有文本内容
当我们点击EditText输入框后获得焦点后,不是将光标移动到文本的开始或者结尾;而是获取输入框中的所有文本内容的话!这个时候我们可以使用selectAllFocus属性;
android:selectAllFocus=”true”
下面是效果图:
第一个具有 android:selectAllFocus=”true”属性,点击后会选中 所有文本,而第二个是没有 android:selectAllFocus=”true”属性的,所以,点击后不会选中所有文本;
这里写图片描述

No.3—–限制EditText输入类型
这里写图片描述

比如限制只能为电话号码,密码(textPassword):
这里写图片描述
可选参数如下:
文本类型,多为大写,小写和数字符号
这里写图片描述
这里写图片描述

数值类型:

这里写图片描述

No.4—–设置最小行,最多行,单行,多行,自动换行;

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

NO.5 —–设置文本间隔,设置英文字母大写类型
我们可以通过下述俩个属性来设置字的间距:
这里写图片描述
这里写图片描述

NO.6 —– 控制EditText四周的间隔距离与内部文字和边框间的距离

这里写图片描述

NO.7 —– 设置EditText获得焦点同时弹出小键盘

这里写图片描述

首先是让EditText获得焦点跟清除焦点的
这里写图片描述
获得焦点后弹出小键盘:
这里写图片描述

第一种:
这里写图片描述

第二种:
这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述

NO.8 —– EditText光标位置的控制

这里写图片描述

NO.9 —–带表情的EditText简单实现

这里写图片描述
这里写图片描述
这里写图片描述

这里写图片描述

代码实现:

public class EditText_03 extends Activity {

        private Button etdBtn;
        private EditText edt3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_text_03_activity);

        final EditText edt3 = (EditText) findViewById(R.id.edt3);
        Button etdBtn = (Button) findViewById(R.id.etdBtn);

        etdBtn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                int randomId = 1 + new Random().nextInt(9);

                    SpannableString spannableString = new SpannableString(
                            "face");
                    Drawable drawable = getResources().getDrawable(R.drawable.gg);
                    drawable.setBounds(0, 0,drawable.getIntrinsicWidth(), 
                            drawable.getIntrinsicHeight());
                    ImageSpan imageSpan = new ImageSpan(drawable , ImageSpan.ALIGN_BASELINE);

                    spannableString.setSpan(imageSpan, 0, 4,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                    spannableString.setSpan(imageSpan, 0, 4, 
                            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
                    int cursor = edt3.getSelectionStart();
                    edt3.getText().insert(cursor, spannableString);
            }
        });
    }
}

No.10 带删除按钮的EditText
我们常常会看到这样的界面:
这里写图片描述
看到最后面的那个“X”了吗?
这里写图片描述

实现代码如下:

public class CoustomEditTextForDel extends EditText {

    private static String  TAG = "CoustomEditTextForDel";
    private Drawable imgInable;
    private Drawable imgInAble;
    private Context mContext;


    public CoustomEditTextForDel(Context context) {
        super(context);
        mContext = context;
        init();
    }

    public CoustomEditTextForDel(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        init();
    }
    public CoustomEditTextForDel(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
        mContext = context;
        init();
    }

    private void init() {
        imgInable = mContext.getResources().getDrawable(R.drawable.del);
        addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
                setDrawable();
            }
        });
        setDrawable();
    }
    //设置删除图片
    private void setDrawable(){
        if (length() < 1) {
            setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
        }else {
            setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null);
        }
    }

    //处理删除事件
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (imgInAble !=null && event.getAction() == MotionEvent.ACTION_UP) {

            int eventX =(int)event.getRawX();
            int eventY =(int)event.getRawY();
            Log.e(TAG, "xys"+"evenX" + eventX +";   eventY = "+eventY);
            Rect rect = new Rect();
            getGlobalVisibleRect(rect);
            rect.left = rect.right - 100;
            if (rect.contains(eventX , eventY)) {
                setText("");
            }
        }
        return super.onTouchEvent(event);
    }

    @Override
    protected void finalize() throws Throwable {
        // TODO Auto-generated method stub
        super.finalize();
    }
}

这是属于进阶技术自定义EditText了,后面我会详细介绍,不要着急~~完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值