0%

Android EditText

EditText

这个东西就是个编辑框,继承于TextView,对输入的东西可以进行验证与限制

输入图片

就有点像输入一个小表情差不多,不是很难实现,因为集成TextView所以我们一样可以使用SpannableString这个类,基本的实现代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private Button btn_1;
private EditText Et_1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.jmp_activity);
btn_1 = (Button) findViewById(R.id.button1);
Et_1 = (EditText) findViewById(R.id.Edit1);
btn_1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
SpannableString span = new SpannableString("Test");
ImageSpan imageSpan = new ImageSpan(BitmapFactory.decodeResource(getResources(), R.drawable.ic_l1));
span.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Et_1.append(span);
}
});
}

首先我们点击按钮的时候,new一个SpannableString然后我们在new一个ImageSpan,在这个构造函数中需要一个Bitmap对象(老版本需要传一个上下文,现在过时了不需要了),我们用BitmapFactory.decodeResource这个进行获取,这个有两个参数:一个资源,另一个是ID,我们设置完成之后,我们就将这个图片span传递给文本span,然后再追加到我哦们的EditText中就可以了。
输入图片
需要注意的是我们SpannableString构造方法中传入的String是代表了我们这个图片,你选中图片之后输入文本就会选中一个Test。

输入内容的限制与校验

限制:

1
2
3
4
5
6
7
8
9
10
11
12
<EditText 
android:id="@+id/Edit1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:digits="abc"
/>
<EditText
android:id="@+id/Edit2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
/>

android:digits="abc"这个的意思就是说我们只能输入abc,android:inputType="number"这个的意思就是说我们只能输入数字。
只能输入数字
校验:

1
2
3
4
5
CharSequence t = Et_1.getText().toString();
if(TextUtils.isEmpty(t))
{
Et_1.setError("你怎么写了个空啊");
}

错误提示