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) { 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("你怎么写了个空啊"); }
|