UI控件之编辑文本控件EditText

来源:互联网 发布:游族网络股份有限公司 编辑:程序博客网 时间:2024/06/05 09:36

(一)概述
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了,后面我会详细介绍,不要着急~~完

1 0
原创粉丝点击