我正在实现一个epub阅读应用程序,我正在使用textview显示epub的文本.我想在用户长时间按下textview时从textview中选择文本,然后对所选文本视图文本(如高亮显示等)执行多项操作.
那么,如何向用户显示这些游标以选择任何用户想要的文本.
那么,如何向用户显示这些游标以选择任何用户想要的文本.
*我不想使用EditText并使其看起来像textview.可能是重写textview是首选.
*我附上截图以解释我在寻找什么 –
解决方法
这是很久以前的问题,当时我自己也有这个问题.我自己为自己的应用程序Jade Reader制作了一个Selectable TextView.我已经为
GitHub提供了解决方案. (BitBucket的代码与应用程序绑定,但它更完整和更完美.)
Selectable TextView (on GitHub)
使用以下代码将使TextView可选.
package com.zyz.mobile.example; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; public class MainActivity extends Activity { private SelectableTextView mTextView; private int mTouchX; private int mTouchY; private final static int DEFAULT_SELECTION_LEN = 5; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // make sure the TextView's BufferType is Spannable,see the main.xml mTextView = (SelectableTextView) findViewById(R.id.main_text); mTextView.setDefaultSelectionColor(0x40FF00FF); mTextView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { showSelectionCursors(mTouchX,mTouchY); return true; } }); mTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mTextView.hideCursor(); } }); mTextView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v,MotionEvent event) { mTouchX = (int) event.getX(); mTouchY = (int) event.getY(); return false; } }); } private void showSelectionCursors(int x,int y) { int start = mTextView.getPreciSEOffset(x,y); if (start > -1) { int end = start + DEFAULT_SELECTION_LEN; if (end >= mTextView.getText().length()) { end = mTextView.getText().length() - 1; } mTextView.showSelectionControls(start,end); } } }