如何在WebView中显示Android操作栏

3

如何在webview中启用ActionBar。我的当前代码直接加载到网页浏览器并跳过所有其他的activity逻辑,但我不确定原因。

Main Activity(主要活动)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.webview);

    ActionBar actionBar = getSupportActionBar();
    actionBar.setTitle("My Page");
    actionBar.setDisplayShowHomeEnabled(false);

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.loadUrl(http://www.google.com);
}

XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="5dip"
/>

</LinearLayout>

我还尝试创建对话框来显示Webview,但也没有成功。

谢谢!

如果您使用的是Android4,只需在setContentView之前调用setTheme即可。但是,如果您使用一些旧版本的自定义操作栏,则这将无济于事。 - vortexwolf
2个回答

2

好的,我找到了解决我的问题的答案,但这更多是技术上的问题。

问题在于链接是一个重定向页面,因此内置的Web浏览器应用程序劫持了我的会话,将这个添加到我的onCreate方法中解决了它。

虽然感谢回复!

myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
});

2
如何在webview中启用ActionBar?
您不能像在Button中一样“启用ActionBar”。操作栏是活动的UI组件,而不是小部件。
我的当前代码直接加载网页并跳过所有其他活动逻辑,但我不确定为什么。
我相当确定它正在执行onCreate()的所有语句。如果您使用调试器,可以自己观察。
如果您真正的问题是操作栏未出现,请确保:
  • 将清单中的目标SDK版本设置为11或更高版本
  • 根据 ActionBarSherlock文档,将您的活动主题设置为Sherlock主题

我正在使用SherlockAction bar,但基本上我想要实现的是在webview上显示ActionBar,或者让webview成为活动的一部分,并在顶部留有空间放置ActionBar。 - Solder Smoker
如果操作栏正在显示,那就是你得到的。 “使ActionBar出现在WebView上” - 我不知道这是什么意思。“使WebView成为具有顶部栏空间的活动的一部分” - 这已经由SherlockActivity和相关类为您处理了。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接