2

我遇到了 WebView 总是填满全屏并因此覆盖我的标签的问题。这是我的标签主机代码..

    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)显示正确,它只是一个相对布局。但我的第二个选项卡是一个显示 web 视图的活动,它正在显示,但使用整个屏幕,覆盖我的选项卡。这是我的第二个标签的代码。

    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);
 }}
4

2 回答 2

3

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

所以要修复,这就是我所做的..

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

然后像这样在 onCreate() 中创建 MyWebViewClient 后立即将其添加到我的 WebView

mWebView.setWebViewClient(new MyWebViewClient());
于 2010-04-27T14:10:25.880 回答
2

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

于 2010-04-26T23:53:20.010 回答