选取文字的聪明文字联想(Textselection与InputConnection)
2016-03-12 21:04
656 查看
选取文字的聪明文字联想(Textselection与InputConnection)
新建一个继承Activity类的TextSelectionActivity,并设置布局文件为:textselection.xml。在布局文件添加一个EditText和一个Button组件:
<EditText android:id="@+id/textselection_edit" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/textselection_btn" android:layout_width="match_parent" android:layout_height="wrap_content" /> |
package lyx.feng.second; import java.util.ArrayList; import lyx.feng.simpletextdemo.R; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class TextSelectionActivity extends Activity implements OnClickListener { private EditText edit = null; private Button btn = null; // 文字联想 private InputConnection conn = null; // 联想的数据 private String item[] = { "apple", "age", "android", "adapter", "arrayadapter", "amount", "bug", "busy", "before", "button", "baseadapter", "bundle" }; // 选择的ItemId private int ItemId = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.textselection); this.edit = (EditText) super.findViewById(R.id.textselection_edit); this.btn = (Button) super.findViewById(R.id.textselection_btn); this.btn.setOnClickListener(this); this.btn.setText("显示联想的字符串"); // 取得InputConnection对象 this.conn = this.edit.onCreateInputConnection(new EditorInfo()); } @Ove 4000 rride public void onClick(View v) { // 判断是否有选择文字 if (conn.getSelectedText(0) != null) { // 取得选择的文字 String selection = this.conn.getSelectedText(0).toString(); // Toast显示选择的文字 Toast.makeText(this, "选择的文字:" + selection, Toast.LENGTH_SHORT) .show(); // 设置下划线 conn.setComposingRegion(this.edit.getSelectionStart(), this.edit.getSelectionEnd()); // 新建一个ArrayList保存匹配的字符串 ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < item.length; i++) { if (item[i].indexOf(selection) != -1) { list.add(item[i]); } } // 判断List里面是否有数据,有就提示对话框让用户选择,没有Toast提示 if (list.size() > 0) { this.ItemId = 0; final String temp[] = new String[list.size()]; list.toArray(temp); AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle("请选择") .setSingleChoiceItems(temp, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 设置ItemId ItemId = which; } }) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 替换为匹配的字符串 conn.setComposingText(temp[ItemId], 1); // 结束匹配 conn.finishComposingText(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 结束匹配 conn.finishComposingText(); // 取消选择 conn.setSelection(0, 0); } }); builder.create().show(); } else { Toast.makeText(this, "没有匹配的文字", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(this, "你还没有选择文字", Toast.LENGTH_SHORT).show(); } } } |
|
|
|
|
|
|
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析