0

即使TextInput聚焦,是否可能不顯示軟鍵盤?我的用例是我需要完全隱藏鍵盤(例如,當您使用某個外部鍵盤時),但我需要保留對TextInput的焦點,以便我可以正常使用它(請參閱脫字符等)。React Native - 在Android上永久禁用軟鍵盤

我不喜歡黑客入侵庫,但是我在react-native包中找到textinput文件夾,並找到了一些我認爲可能相關的文件。首先這一個:

https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java#L96

我替換爲上線96代碼:

editText.setInputType(InputType.TYPE_NULL); editText.setTextIsSelectable(true);

但遺憾的是它沒有工作。

然後我發現這個文件:

https://github.com/facebook/react-native/blob/1e8f3b11027fe0a7514b4fc97d0798d3c64bc895/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java#L215

而且註釋掉線215,但同樣,它並沒有幫助。

有人可以指出我正確的方向如何完成這項工作嗎?謝謝。

回答

0

您可以通過在項目的/android部分的MainActivity上設置一個標誌來完成此操作。

打開AndroidManifest.xml文件app/src/main和下MainActivity變化:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
    android:windowSoftInputMode="adjustResize"> 

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
    android:windowSoftInputMode="stateHidden"> 

這應該永久禁用鍵盤該活動,這在一般情況下是大量你的React Native應用程序在Android上。欲瞭解更多信息,請參閱:https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

+0

感謝您的建議,但不幸的是它沒有工作。我也嘗試'stateAlwaysHidden',也沒有工作。我忘了提及這些是我嘗試的第一個選項。 – filster

+0

看來'windowSoftInputMode'只有在焦點自動分配的情況下才有效。 (第三個答案在這裏)https://stackoverflow.com/questions/1109022/close-hide-the-android-soft-keyboard 「...默認情況下,Android會自動分配初始焦點到第一個EditText或可聚焦控件當然,InputMethod(通常是軟鍵盤)會通過顯示自己來響應焦點事件。當設置爲stateAlwaysHidden時,AndroidManifest.xml中的windowSoftInputMode屬性指示鍵盤忽略這個自動分配的初始焦點。 「 – filster