Я хотел бы иметь TextView, чтобы пользователь мог выбрать / скопировать текст из TextView. TextView является частью фрагмента в TabLayout. Фрагмент имеет следующий макет:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="2">
<TextView
android:id="@+id/textview_translator_text"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@drawable/background_default"
android:textIsSelectable="true"
android:textSize="@dimen/edittext_textsize_translator"
android:padding="@dimen/edittext_padding_translator"
android:scrollbars="vertical"/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/view_height_spacing" />
<EditText
android:importantForAutofill="no"
android:inputType="text"
android:id="@+id/edittext_translator_text"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@drawable/background_default"
android:hint="@string/type_text"
android:gravity="top"
android:textSize="@dimen/edittext_textsize_translator"
android:padding="@dimen/edittext_padding_translator"
android:scrollbars="vertical"/>
</LinearLayout>
И соответствующий код Java выглядит следующим образом:
public class FragmentText extends Fragment {
private TextView textView;
private View rootView;
private TextTranslator textTranslator;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_text, container, false);
textTranslator = new TextTranslator();
initializeTextView();
initializeEditText();
return rootView;
}
private void initializeTextView() {
textView = rootView.findViewById(R.id.textview_translator_text);
textView.setMovementMethod(new ScrollingMovementMethod());
}
private void initializeEditText() {
EditText editText = rootView.findViewById(R.id.edittext_translator_text);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
// currently not used
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String textInBinary = textTranslator.getBinarySequence(charSequence.toString());
textView.setText(textInBinary);
}
@Override
public void afterTextChanged(Editable editable) {
// currently not used
}
});
}
}
Я ожидал, что текст TextView можно выбрать (так как я используя свойство textIsSelectable). Однако по какой-то причине текст не выбирается.
Я тестировал приложение на нескольких устройствах с разными Android версиями, и ни на одном из этих устройств текст нельзя было выбрать.
Любое предположение, как я может сделать текст TextView доступным для выбора?