【发布时间】:2020-02-29 07:08:48
【问题描述】:
我想要一个 TextView,以便用户可以从 TextView 中选择/复制文本。 TextView 是 TabLayout 中 Fragment 的一部分。 Fragment 的布局如下:
<?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 的文本可选择?
【问题讨论】:
-
这确实很奇怪,因为设置
android:textIsSelectable="true"应该可以工作。您是否在 java 类中的 textview 上设置了一些侦听器
标签: android android-fragments properties textview