关于多WebView的时候,不能输入的问题

当一个Activity中包含多个WebView时,只有最后一个设置焦点的WebView能够正常输入。问题出现在requestFocus请求上,尝试使用OnFocusChangeListener和OnTouchListener解决,但存在一些问题和效率考虑。目前采用在WebView触摸时requestFocus作为临时方案,但仍有输入切换bug待解决。
摘要由CSDN通过智能技术生成

问题:在一个Activity中建立多个WebView,默认情况下面只能有一个WebView可以正常输入。

 

主要代码:

在xml中简单建立了两个WebView:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

    <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="400dip"></WebView>

    <WebView android:id="@+id/webView2" android:layout_width="match_parent" android:layout_height="400dip"></WebView>

</LinearLayout>

 

在onCreate中直接loadUrl,这里都load百度主页:

 

final WebView v1 = (WebView)findViewById(R.id.webView1);

        v1.loadUrl("http://www.baidu.com");

        v1.setOnFocusChangeListener(this);

        //v1.setOnTouchListener(this);

        //v1.requestFocusFromTouch();        

 

        final WebView v2 = (WebView)findViewById(R.id.webView2);

        v2.loadUrl("http://www.baidu.com");

        v2.setOnFocusChangeListener(this);

        //v2.setOnTouchListener(this);        

        //v2.requestFocusFromTouch();

 

验证了一下,发现:

 

1. 在没有requestFocus/requestFocusFromTouch的情况下面,第一个WebView可以正常输入,第二个没有反应(不会弹出虚拟键盘);

2. 设置了requestFocus/requestFocusFromTouch以后,最后设置的那个WebView是正常的;

 

其他控件不存在这个问题,不知道算不算的是WebView的一个bug?

 

尝试用setOnFocusChangeListener,打算在特定WebView获得Focus的时候调用requestFocus,但实际测试中发现这个办法行不通。原因:

1. 在没有requestFocus/requestFocusFromTouch的情况下面,点击第二个WebView的时候,该WebView根本得不到OnFocusChange的消息,而第一个WebView在点击输入框的时候,提示lose focus,在取消输入框的时候,提示gain focus和lose focus。。。。。很奇怪,好像WebView和页面内的内容的focus是分开的;

2. 设置了requestFocus/requestFocusFromTouch以后,就更奇怪了,本来以为是上面的情况直接颠倒过来,但实际情况是第一个WebView也能收到消息,但不全,还是用不上;

 

嗯,我现在使用setOnTouchListener来解决这个问题,就是在WebView的OnTouchDown的时候requestFocus,这样基本可以满足要求,但我发现一个bug,在一个WebView中输入,这个时候直接点击第二个WebView的输入,这个时候可以输入到第二个里面,但再点击第一个输入,还是输入到第二个。

 

现在还没有解决这个bug,而且总觉得用OnTouch来切换不好(在效率上考虑),希望能找到更好的方法解决

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值