android EditText插入字符串到光标所在位置

泡在网上的日子 / 文 发表于2013-08-06 23:22 次阅读 EditText,android

在安卓中处理文本编辑的时候,我们一般都是用EditText控件,除了基本的输入文字功能之外,我们很可能还需要一些更灵活的功能,比如在光标所在位置插入一张图片。但是EditText本身只有追加函数append(),并没有insert方法,难道要我们自己写方法实现插入功能吗,经过研究之后发现,EditText有已经实现好了的插入方法,不过在其附属的另外一个对象Editable中。通过getEditableText()方法可以获得该对象。下面的一段代码演示了如何在EditText的光标之处插入文字:

EditText mEditText = (EditText)findViewById(R.id.input);//EditText对象
int index = mEditText.getSelectionStart();//获取光标所在位置
String text="I want to input str";
Editable edit = mEditText.getEditableText();//获取EditText的文字
if (index < 0 || index >= edit.length() ){
      edit.append(text);
}else{
      edit.insert(index,text);//光标所在位置插入文字
 }

你可能会说,在光标之处插入文字,那还不简单,用户直接通过输入法打出来的文字不都是在光标之处吗,你上面讲的东西有什么实际意义?的确是这样,但是有些情况下,我们希望光标处的文字或者其他东西并不是来自于用户输入,可能是来自于其他app或者activity的返回结果,这个结果应该自动插入到光标处,所以上面的讨论是有实际意义的。

收藏 赞 (13) 踩 (0)
上一篇:ViewGroup详解
一个Viewgroup基本的继承类格式如下: import android.content.Context;import android.view.ViewGroup;public class MyViewGroup extends ViewGroup{public MyViewGroup(Context context) {super(context);// TODO Auto-generated constructor stub}@Overri
下一篇:Android AIDL使用详解
1.什么是aidl:aidl是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口 icp:interprocess communication :内部进程通信 2.既然aidl可以定义并实现进程通信,那么