Android-Как показать выбор текста в текстовом режиме?

Я использую приложение для чтения epub, где я использую textview для отображения текста epub. Я хочу выбрать текст из текстового поля, когда пользователь долго нажимает на textview, а затем выполняет несколько операций над выбранным текстом textview, например, подсветкой и т. Д. Итак, как я могу показать эти курсоры пользователю, чтобы выбрать текст, который хочет пользователь.

* Я не хочу использовать EditText и сделать его похожим на textview. Может быть, преобладает текстовое изображение.

* Я добавил скриншот, чтобы объяснить, что я ищу –

Снимок экрана с луны + читатель, чтобы отобразить в нем выбор текста, который я хочу в своем приложении.

Это давно спрошено, когда у меня тоже была эта проблема. Я сделал Selectable TextView самостоятельно для своего собственного приложения Jade Reader. Я принял решение для GitHub. (Код в BitBucket связан с приложением, но он более полный и отполированный.)

Выбираемый TextView (на GitHub)

Jade Reader (на BitBucket)

выбор

Использование следующего кода сделает ваш 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); } } } 

Это зависит от минимальной версии Android, которую вы хотите поддержать.

В версии 3.0+ у вас есть атрибут textIsSelectable в TextView, который позволяет это поведение. Например:

  

Ниже вам лучше всего использовать EditText, который выглядит и ведет себя как TextView (кроме вещи изложения). Или вы можете реализовать эту функцию самостоятельно, используя пробелы.

Interesting Posts

Как сгенерировать символ отладки gcc вне цели сборки?

Комбинация клавиш быстрого доступа Outlook для перемещения сообщения в другую папку

Как назначить значения по диагонали?

Установить цвет области TextView в Android

Загруженное изображение доступно только после обновления страницы

Нужны ли мне все версии Microsoft .NET Framework?

Можно ли отображать встроенные изображения из html в Android TextView?

Преобразование BufferedInputStream в изображение

Ускорение pandas.DataFrame.to_sql с помощью fast_executemany из pyODBC

Разница между HBase и Hadoop / HDFS

В чем разница между прокси-сервером и VPN?

как рассчитать движение телефона в вертикальном направлении от restа?

Могу ли я сделать Gmail стандартной программой отправки почты получателю в Word 2007?

Остановить Ubuntu от автоматического обновления времени

Пользовательский серализатор Gson для одной переменной (из многих) в объекте с использованием TypeAdapter

Давайте будем гением компьютера.