如何在Android中显示具有Theme.Dialog样式的WebView

时间:2010-08-29 18:48:39

标签: android dialog themes webview

我在清单中声明了一个WebView活动:

<activity android:name=".MyWebView"
    android:label="@string/app_name"
    android:configChanges="orientation|keyboardHidden"
    android:theme="@android:style/Theme.Dialog">
</activity>

WebView看起来像这样:

<?xml version="1.0" encoding="utf-8"?>

<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/webview"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
    />
</LinearLayout>

当我在主活动中启动此活动时,只有包含应用程序名称的对话框标题可见,但WebView不可见。如果我将一个TextView添加到LinearLayout,它也会显示,但仍然缺少WebView。 如果我不在清单中应用android:theme="@android:style/Theme.Dialog",则会显示WebView。

为什么这样,我如何在对话框中显示WebView?

4 个答案:

答案 0 :(得分:23)

我发现如果你将webview更改为wrap_content而不是fill_parent,它会起作用。不知道为什么。这可能是一个错误。

答案 1 :(得分:3)

我找到的最好的方法就是这样一个小技巧:

注意mindidth和minHeight的1000dp

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:minWidth="1000dp"
          android:minHeight="1000dp" >

    <WebView android:id="@+id/web_view"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent" />

</LinearLayout>

另一种方法是将内容包装在WebView上,但在加载网页之前它不会扩展。所以它会从小开始,然后展开。这种hackish方式将使大型对话开始。

答案 2 :(得分:0)

我认为你在做什么会起作用。也许尝试覆盖对话框类而不是活动类。

答案 3 :(得分:0)

使用WebView作为根布局 - 没有任何周围的元素。 不知道为什么它不适用于周围的布局。