in android

有关Android的TextView组件的几个问题

小结

TextView组件与EditText类似,但有一些不同,理论上TextView是只读的。尝试了让TextView组件可以弹出SetError的提示信息,只读,并不能弹出Android软键盘。

问题及解决

如果需要将TextView组件不能弹出Android软键盘,并看不到焦点光标,需要设置以下几个属性:
android:cursorVisible="false"
android:windowSoftInputMode="stateHidden"
也可以在程序中调用setShowSoftInputOnFocus(false);函数。

另外,如果想要TextView组件SetError的提示信息能够正常显示,需要设置以下几个属性:
android:focusable="true"
android:focusableInTouchMode="true"

并在程序中进行操作,需要调用requestFocus(),再调用SetError(),如下:

 test_TextView.requestFocus();
 test_TextView.setError("Error Message Pop up!");

最后,TextView的XML设置如下示例:

        <TextView
            android:id="@+id/test_TextView"
            style="@style/AppTheme.InputTextViewDropdown"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.6"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:cursorVisible="false"
            android:windowSoftInputMode="stateHidden"
            android:hint="@string/test_TextView"
            android:inputType="text|numberDecimal"
            tools:text="13.1" />

参考

Stackoverflow: Prevent the keyboard from displaying on activity start
Stackoverflow: Android: Force EditText to remove focus? [duplicate]
Stackoverflow: Disable keyboard on EditText
Stackoverflow: Android setError(“error”) not working in Textview
Stackoverlfow: AutoCompleteTextView setError

Write a Comment

Comment