2013-11-09 51 views
3

我使用Twitter Bootstrap 3和固定顶部导航栏。
我的android应用程序中有一个Webview。Android webview和Twitter bootstrap固定导航栏无法点击

我在应用程序中添加了很多功能,但我找不到解决此问题的方法。 一切工作正常。
用户点击固定顶部导航栏中的链接,webview加载新的URL。

但当
*用户加载网页
*,那么转到页的底部
*页转到顶部
[PART 1点开始]
*用户点击导航栏链接
*导航栏的链接可以”吨被点击
*链接不响应
[PART 2点开始]
*用户滚动页面中一个非常小的量下降(比方说1-2毫米。)
* VERTIC al滚动条出现在右侧
[第3部分开始]
*用户点击链接
*导航栏链接是可点击的。

对不起,我不能在这里提供应用程序代码,但我可以尽我所能调试问题。下面我粘贴了第1部分,第2部分和第3部分的logcat结果。

小提琴:http://jsfiddle.net/mavent/X3THf/19/

<nav class="navbar navbar-inverse navbar-fixed-top visible-xs" role="navigation"> 
    <div class="navbar-header" style="text-align:center;"> 
     <button type="button" class="navbar-toggle pull-left" data-toggle="collapse" data-target=".navbar-part2"> <span class="sr-only">Toggle navigation</span> 
<span class="icon-bar"></span> 
<span class="icon-bar"></span> 
<span class="icon-bar"></span> 

     </button> 
     <button type="button" class="navbar-toggle pull-right" data-toggle="collapse" data-target=".navbar-part3" style="padding: 3px 15px;"> 
      <img src="http://www.wdc.com/Global/images/icons/icon_supporthelp.gif" width="24" height="24" alt="aaaa"> 
     </button> 
     <div style="padding-top: 15px;"> <a href="/page0" title="aaa" style="color:#ffffff;margin-top:40px;">Example.com</a> 

     </div> 
    </div> 
    <div class="collapse navbar-collapse navbar-part2"> 
     <ul class="nav navbar-nav"> 
      <li><a href="/page1">page 1</a> 

      </li> 
      <li><a href="/page2">page 2</a> 

      </li> 
     </ul> 
    </div> 
    <div class="collapse navbar-collapse navbar-part3"> 
     <ul class="nav navbar-nav"> 
      <li><a href="/page3">page 3</a> 

      </li> 
      <li><a href="/page4">page 4</a> 

      </li> 
     </ul> 
    </div> 

在我的WebView我不作非常具体的行动。这是一个普通的webview。

mWebView = (WebView) findViewById(R.id.webview); 
mWebView.setWebChromeClient(new myWebChromeClient()); 
mWebView.setWebViewClient(new myWebViewClient()); 
mWebView.getSettings().setJavaScriptEnabled(true); 
String defaultUserAgent = mWebView.getSettings().getUserAgentString(); 
mWebView.getSettings().setUserAgentString(defaultUserAgent+" my app"); 

[PART 1] 
11-09 13:27:03.522 17315-17355/com.example.android E/webcoreglue﹕ Should not happen: no rect-based-test nodes found 
11-09 13:27:03.612 17315-17315/com.example.android V/WebViewInputDispatcher﹕ blockWebkitDraw 
11-09 13:27:03.612 17315-17315/com.example.android V/WebViewInputDispatcher﹕ blockWebkitDraw lockedfalse 
11-09 13:27:03.622 17315-17315/com.example.android V/webview﹕ singleCursorHandlerTouchEvent -getEditableSupport FASLE 
11-09 13:27:03.923 17315-17355/com.example.android D/webview﹕ blockWebkitViewMessage= false 

[PART 2] 
11-09 13:27:32.711 17315-17315/com.example.android V/WebViewInputDispatcher﹕ blockWebkitDraw 
11-09 13:27:32.711 17315-17315/com.example.android V/WebViewInputDispatcher﹕ blockWebkitDraw lockedfalse 
11-09 13:27:32.711 17315-17315/com.example.android V/webview﹕ singleCursorHandlerTouchEvent -getEditableSupport FASLE 

[PART 3] 
11-09 13:27:42.650 17315-17315/com.example.android V/WebViewInputDispatcher﹕ blockWebkitDraw 
11-09 13:27:42.650 17315-17315/com.example.android V/WebViewInputDispatcher﹕ blockWebkitDraw lockedtrue 
11-09 13:27:42.650 17315-17315/com.example.android V/webview﹕ singleCursorHandlerTouchEvent -getEditableSupport FASLE 
11-09 13:27:42.961 17315-17355/com.example.android D/webview﹕ blockWebkitViewMessage= false 
11-09 13:27:48.176 17315-17355/com.example.android I/GATE﹕ <GATE-M>DEV_ACTION_COMPLETED</GATE-M> 
11-09 13:27:48.256 17315-17315/com.example.android W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection 
11-09 13:27:48.256 17315-17315/com.example.android W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection 
11-09 13:27:48.256 17315-17315/com.example.android W/IInputConnectionWrapper﹕ getExtractedText on inactive InputConnection 

所以每次导航栏链接没有的功能,用户必须页面上的一些滚动,然后单击链接。

+0

我对使用Bootstrap 3的android 4.3有完全相同的问题。你是否曾经能够找到解决方案? –

+0

@Mike_G请检查我的答案。 – trante

回答

0

6个月后,这个问题依然存在。所以下面的回答并不能解决问题。

原因是果冻豆的错误。有一个解决方案,完美的作品。

我创建了一个新的WebView类,我使用myWebView类而不是默认的WebView类。 本主题帮助我很多:Android WebView JellyBean -> Should not happen: no rect-based-test nodes found

public class MyWebView extends WebView 
{ 
    Context mContext; 

    public MyWebView(Context context) 
    { 
     super(context); 
     mContext = context; 
    } 

    public MyWebView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     mContext = context; 
    } 

    public MyWebView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
     mContext = context; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN){ 

      int temp_ScrollY = getScrollY(); 
      scrollTo(getScrollX(), getScrollY() + 1); 
      scrollTo(getScrollX(), temp_ScrollY); 
     } 
     return super.onTouchEvent(event); 
    } 
} 
+0

由于某些原因getScrollY和scrollTo在Eclipse中未被识别。我使用PhoneGap并试图在我的类中实现扩展DroidGap。 –

+0

现在我刚刚意识到这个问题不像你的问题。我最上面的按钮是可以点击的,但只能在其上边缘。 http://stackoverflow.com/questions/20409632/android-4-3-and-phonegap-cant-tap-link –

0

我把它从6月4日,该问题仍然存在你的编辑,也许是由于Android的JB的问题。

即使在Android中不是问题,bootstrap 3也不支持JB中webview使用的Android浏览器。

我知道的唯一解决方案是使用Intel's crosswalk project(可能通过Cordova或Google的CCA)将当前版本的Chromium捆绑为您的webview,而不是取决于平台的webview,其功能和怪癖取决于Android版本,差异很大。

这是一个额外的18MB,我敢肯定你不想要,但这样你可以在所有版本的Android中为你的应用程序获得一致的webview。

+0

谢谢你的建议。我不知道人行横道。但额外的18MB对我们的3MB应用程序来说非常巨大:) – trante