小结
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