2010-04-26 32 views
2

我无法使用WebView始终填充整个屏幕,因此覆盖了我的选项卡。这里是我的tabhost代码..WebView内部Tab隐藏TabWidgets

public class tabNZBMobile extends TabActivity { 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Reusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    // Create an Intent to launch an Activity for the tab (to be reused) 
    intent = new Intent().setClass(this, NewzbinMobile.class); 

    // Initialize a TabSpec for each tab and add it to the TabHost 
    spec = tabHost.newTabSpec("search").setIndicator("Search", 
    res.getDrawable(R.drawable.ic_tab_search)) 
    .setContent(intent); 
    tabHost.addTab(spec); 

    // Do the same for the other tabs 
    intent = new Intent().setClass(this, sabnzbWeb.class); 
    spec = tabHost.newTabSpec("sabnzbweb").setIndicator("SabNZBd", 
    res.getDrawable(R.drawable.ic_tab_sabnzbweb)) 
    .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTabByTag("search"); 
}} 

我的第一个选项卡(NewzbinMobile.class)显示正确,它只是一个RelativeLayout的。但我的第二个标签是一个显示webview的活动,它正在显示,但使用整个屏幕覆盖我的标签。这是我的第二个选项卡的代码。

public class sabnzbWeb extends Activity { 
WebView mWebView; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String sabNZBurl = new String("http://test.server.org:8080/m"); 

    mWebView = new WebView(this); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    setContentView(mWebView); 
    mWebView.loadUrl(sabNZBurl); 
}} 

回答

2

如果我猜的话,http://test.server.org:8080/m做了重定向,在这种情况下,它不是你的WebView那就是“覆盖[你]标签”,而是它是浏览器应用程序。 WebView默认通过启动浏览器应用程序来处理重定向和常规点击。

3

就是这样。我知道通过重写WebViewClient的shouldOverrideUrlLoading方法来处理重定向,但是我没有意识到我正在测试的url正在重定向! ty非常。

所以修复,这里是我做过什么..

final class MyWebViewClient extends WebViewClient { 
    @Override 
    // Show in WebView instead of Browser 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     view.loadUrl(url); 
     return true; 
    } 
} 

,然后添加MyWebViewClient到我的WebView之后我的onCreate(创建)这样

mWebView.setWebViewClient(new MyWebViewClient());