2010-08-29 34 views
8

tôi tuyên bố một hoạt động WebView trong biểu hiện như thế này:Làm thế nào để hiển thị một WebView với phong cách Theme.Dialog trong Android

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

Các WebView trông như thế này:

<?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> 

Khi tôi bắt đầu này hoạt động trong hoạt động chính của tôi, chỉ có tiêu đề của hộp thoại, chứa tên ứng dụng, hiển thị nhưng không hiển thị trên WebView. Nếu tôi thêm một TextView vào LinearLayout, nó cũng được hiển thị, nhưng vẫn thiếu WebView. Nếu tôi không áp dụng android:theme="@android:style/Theme.Dialog" trong tệp kê khai, thì WebView sẽ được hiển thị.

Tại sao điều đó và cách tôi có thể hiển thị WebView trong hộp thoại?

Trả lời

23

Tôi thấy rằng nó hoạt động nếu bạn thay đổi chế độ xem web thành wrap_content thay vì fill_parent. Không biết tại sao. Nó có thể là một lỗi.

+0

Rất tốt, phù hợp với tôi. :) Phải mất trong khi cho đến khi WebView được hiển thị (vì vậy, chỉ có tiêu đề lúc đầu) nhưng có lẽ tôi sẽ thêm một tiến trình vô hạn trong khi trang web đang được tải. – Manuel

+0

vâng, trông giống như một lỗi cho tôi quá, wrap_content là alright. –

+0

cũng làm việc cho tôi :) Cảm ơn! –

0

Tôi nghĩ rằng những gì bạn đang làm sẽ hoạt động. Có thể cố gắng ghi đè lớp hộp thoại thay vì lớp hoạt động.

+0

Tôi không làm cho nó hoạt động, dù bằng cách nào. Bạn có thể đưa ra một ví dụ làm việc? – Manuel

0

Sử dụng WebView làm bố cục gốc - không có bất kỳ phần tử xung quanh nào. Không biết tại sao nó không hoạt động với bố cục xung quanh.

3

Cách tốt nhất mà tôi đã tìm thấy là một mẹo nhỏ như thế này:

Thông báo các 1000dp cho MinWidth và minheight

<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> 

Một cách khác là để bọc nội dung trên WebView nhưng nó wont mở rộng cho đến khi bạn tải một trang web ... nó sẽ bắt đầu nhỏ, sau đó mở rộng. Cách hackish này sẽ làm cho hộp thoại lớn lúc bắt đầu.

Các vấn đề liên quan