如何在 Android 中显示具有 Theme.Dialog 风格的 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?
I declared a WebView activity in the manifest like this:
<activity android:name=".MyWebView"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.Dialog">
</activity>
The WebView looks like this:
<?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>
When I start this activity within my main activity, only the title of the dialog, containing the apps name, is visible but not the WebView. If I add a TextView to the LinearLayout, it is shown as well, but still the WebView is missing.
If I don't apply android:theme="@android:style/Theme.Dialog"
in the manifest, the WebView is displayed.
Why is that and how can I show a WebView in a dialog?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我发现如果将 webview 更改为wrap_content而不是fill_parent,它就可以工作。不知道为什么。这可能是一个错误。
I found that it works if you change the webview to wrap_content rather than fill_parent. No idea why. It's probably a bug.
我发现的最好的方法是这样的一个小技巧:
注意 minWidth 和 minHeight 的 1000dp
另一种方法是将内容包装在 WebView 上,但在加载网页之前它不会展开。将从小型开始,然后扩大。这种黑客方式将使开始时出现大对话框。
The best way I have found is a little trick like this:
Notice the 1000dp for minWidth and minHeight
The other way is to wrap content on the WebView but it wont expand until you load a webpage..so it will start small, then expand. This hackish way will make the large dialog at start.
我认为你正在做的事情会起作用。也许尝试覆盖对话框类而不是活动类。
I would think what you are doing would work. Maybe try to override the dialog class instead of the activity class.
使用 WebView 作为根布局 - 没有任何周围元素。
不知道为什么它与周围的布局不兼容。
Use the WebView as the root layout - without any surrounding element.
Don't know why it didn't work with the surrounding layout.