您的位置:首页 > 产品设计 > UI/UE

UI控件之编辑文本控件EditText

2016-06-19 17:55 531 查看
(一)概述

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了,后面我会详细介绍,不要着急~~完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: