关于WebView点击输入框时手机软键盘不出问题

文章详细介绍了在WebView中遇到输入框点击无法触发软键盘的情况,并提供了解决方案,通过实现自定义OnTouchListener来解决焦点问题。同时分享了如何在页面跳转前后控制软键盘的显示与隐藏,确保用户体验不受影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WebView中有输入框时,点击调用不出手机软键盘。
在网上查询说给webview获取焦点即可。调用了方法,代码如下:
  webView.requestFocus();

依然没有起作用。后查询得知方法,代码如下:

webView.setOnTouchListener ( new View.OnTouchListener () {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                switch (event.getAction ()) {
                case MotionEvent.ACTION_DOWN :
                case MotionEvent.ACTION_UP :
                    if (!v.hasFocus ()) {
                       v.requestFocus ();
                    }
                    break ;
                }
                return false ;
            }
        });

 

经测试,可以调出软键盘。

 ---------------------------------------------------------

有时候从在一个页面中弹出软键盘后,跳转到另一个页面后软键盘还是开启的,这时候要隐藏软键盘可以在跳转之前的页面复写onPause方法并隐藏键盘

 

@Override
	public void onPause()
	{
		super.onPause();
		Logger.e("ActivityManager", "onPause");
		((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)).
		hideSoftInputFromWindow(RetrievePasswordActivity.this.getCurrentFocus().get                WindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
	}
 

 

转载自:http://blog.sina.com.cn/s/blog_705dc23f0101auwj.html

### Android WebView 软键盘遮挡输入框解决方案 在开发过程中,遇到软键盘遮挡 WebView 输入框的情况是一种常见问题。以下是几种有效的解决方法: #### 方法一:调整 `AndroidManifest.xml` 文件 通过设置 Activity 的 `android:windowSoftInputMode` 属性来处理软键盘的行为。可以将其值设为 `adjustPan` 或者 `adjustResize`。 - **`adjustPan`**: 当软键盘弹出,整个界面不会重新布局,而是平移以确保当前焦点控件可见。 - **`adjustResize`**: 当软键盘弹出,活动窗口会被压缩以便留出空间给软键盘。 配置示例: ```xml <activity android:name=".YourActivity" android:windowSoftInputMode="adjustResize"> </activity> ``` 此方法简单易用,适用于大多数场景[^2]。 #### 方法二:动态设置 Soft Input Mode 可以在 Activity 的 `onCreate()` 方法中动态设置软键盘模式。这种方式同样支持两种行为选项:`SOFT_INPUT_ADJUST_RESIZE` 和 `SOFT_INPUT_ADJUST_PAN`。 代码实现如下: ```java import android.view.WindowManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN ); } ``` 这种方法适合需要灵活控制软键盘显示逻辑的场景[^3]。 #### 方法三:自定义 ScrollView 行为 如果以上两种方法无法满足需求,可以通过修改 WebView 所处容器(通常是 ScrollView 或 NestedScrollView)的行为来解决问题。具体做法是在滚动视图中监听软键盘状态并手动调整位置。 以下是一个简单的例子: ```java public class CustomScrollView extends ScrollView { public CustomScrollView(Context context) { super(context); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); // 如果高度发生变化,则尝试滚动到合适的位置 this.scrollTo(0, Math.max(h - getHeight(), 0)); } } ``` 将该类用于包裹 WebView 容器即可[^1]。 --- ### 总结 针对 Android WebView软键盘遮挡输入框问题,推荐优先采用调整 `AndroidManifest.xml` 配置的方式 (`adjustResize`) 来快速解决问题;对于更复杂的需求,可考虑动态设置软键盘模式或定制化滚动组件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值