Hai我在android中遇到键盘问题,当我想在文本输入中键入任何东西时它会在键盘上显示一些建议,我不想要那些建议,任何人都可以帮助我如何避免这些建议.

任何帮助非常感谢,上面的图片来自nexus 6.这是我的TextInput代码
<TextInput
style={styles.TextInput}
value={this.state.currentWord}
onChangeText={(text) => this.setState({currentWord:text.trim()})}
placeholder="Type Your word here"
autoCapitalize='characters'
autoCorrect={this.state.autoCorrect}
autoFocus={this.state.autoFocus}/>
Run Code Online (Sandbox Code Playgroud)
在状态中,我声明autoCorrect为false
Rya*_*ale 15
使用时autoComplete="false",React native将底层的本机android输入类型设置为TYPE_TEXT_FLAG_NO_SUGGESTIONS并清除TYPE_TEXT_FLAG_AUTO_CORRECT,有效地告诉系统不提供任何建议(参见源代码).这是根据Android参考指南禁用文本建议的推荐方法.
问题是,某些(或许多?)HTC设备似乎不遵守此设置.从我的研究来看,似乎一些三星设备可能也不支持这一点.可以合理地假设其他制造商不会尊重这种设置 - 这很糟糕.这是Android的一个大问题 - 不知何故他们没有向微软学习 - 那些肮脏的制造商会破坏你产品的可靠性,而且需要几年(大约十年)才能开始消除损害</rant>.(注意:我是Android粉丝).
根据Daniels的回答,似乎有人成功设置了要使用的文本类型TYPE_TEXT_VARIATION_FILTER- 它告诉设备您的输入正用于过滤项目列表.让我们尝试修改现有的文本输入并查看它是否有效 - 然后你可以根据需要构建我们自己的文本输入:
你需要找到该文件ReactTextInputManager.java.从React Native文件夹,它将位于此路径:
[react-native]/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java
Run Code Online (Sandbox Code Playgroud)在第378行附近,您会找到一个名为setAutoCorrect- 将其更新为以下内容的方法:
public void setAutoCorrect(ReactEditText view, @Nullable Boolean autoCorrect) {
// clear auto correct flags, set SUGGESTIONS or NO_SUGGESTIONS depending on value
updateStagedInputTypeFlag(
view,
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_FILTER,
autoCorrect != null ?
(autoCorrect.booleanValue() ?
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT : (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_FILTER))
: 0);
}
Run Code Online (Sandbox Code Playgroud)构建您的应用并进行测试.如果它不起作用,请尝试从上面的代码中删除InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS |(包括管道)的两个实例,然后重试.如果这不起作用,我认为你运气不好.
如果确实有效,那么你可以a)指导团队中的每个人如何在构建之前修改react本机组件(hacky和不可靠),或者b)构建自己的文本输入组件.您应该能够复制并粘贴现有的TextInput代码,而不必编写很多本机代码 - 主要是重命名.祝好运.
更新:进一步沿着兔子洞,你也可以尝试设置TYPE_TEXT_VARIATION_VISIBLE_PASSWORD.所以这里是厨房水槽 - 我假设您可以很好地阅读代码以使用不同的输入类型组合:
public void setAutoCorrect(ReactEditText view, @Nullable Boolean autoCorrect) {
// clear auto correct flags, set SUGGESTIONS or NO_SUGGESTIONS depending on value
updateStagedInputTypeFlag(
view,
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD,
autoCorrect != null ?
(autoCorrect.booleanValue() ?
InputType.TYPE_TEXT_FLAG_AUTO_CORRECT : (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD))
: 0);
}
Run Code Online (Sandbox Code Playgroud)
有助于理解方法签名updateStagedInputTypeFlag如下:
updateStagedInputTypeFlag([view], [flagsToUnset], [flagsToSet]);
Run Code Online (Sandbox Code Playgroud)
更新2:您可以使用很多"输入类型"标志,请在此处查看完整列表.随意尝试别人 - 你可能偶然发现一个有效的.您应该能够修改上面第一次更新的代码.
| 归档时间: |
|
| 查看次数: |
8969 次 |
| 最近记录: |