gpt4 book ai didi

android - 在 WebView 中禁用 SoftKeyboard

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:05:22 26 4
gpt4 key购买 nike

我知道这是一个常见问题,但我无法在此处和 Google 上找到有效的解决方案。

我的 Android 应用程序中有一个 WebView,里面有一个 JSF 页面和一个简单的 DatePicker 组件:

<p:calendar value="#{patientHealthDataView.dateFrom}" id="popupButtonDateFrom" showOn="button" class="tableCalendarText"/>

显示带有日历的弹出窗口。

感谢这个命令,我设法使弹出窗口工作:

WebView view=(WebView)findViewById(R.id.statistics);
view.getSettings().setJavaScriptEnabled(true);

不幸的是,当我单击输入文本或按钮以显示日历的弹出窗口时,焦点会转到输入文本,Android 会显示其隐藏日历的键盘。

我尝试了几种解决方案。最后一个是这样的:

 view.setOnTouchListener(new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard(v);
return false;
}
});

public void hideSoftKeyboard(View v) {
Activity activity = (Activity) v.getContext();
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}

根据 Android Studio 的建议,此代码在以下位置引发空指针异常:

activity.getCurrentFocus().getWindowToken()

其他解决方案说要在 list 中插入一个特殊命令,但我只想在 WebView 中阻止键盘。

有什么建议吗?

最佳答案

在 layout.xml 的主(父)布局中添加以下代码

android:descendantFocusability="blocksDescendants"

希望它能奏效。

并在您的 webview 中设置以下属性

android:focusable="false" 
android:focusableInTouchMode="true"

关于android - 在 WebView 中禁用 SoftKeyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com