FrameLayout/WebView игнорирует fill_parent в теме диалога
У меня есть активность с темой диалога.
<activity
android:name=".MyActivity"
android:theme="@android:style/Theme.Dialog" />
Это действие использует следующий макет XML:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_article_frame_layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#000000">
<WebView
android:id="@+id/activity_article_web_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<Button
android:id="@+id/activity_article_close_button"
android:layout_width="25dip"
android:layout_height="26dip"
android:layout_marginTop="5dip"
android:layout_marginRight="5dip"
android:layout_gravity="right|top"
android:background="@drawable/close_button" />
</FrameLayout>
Содержимое WebView будет загружено из сохраненного файла на SD-карте (содержимое предоставляется в виде данных о намерениях). Это происходит в onCreate():
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_article);
// Handle to the WebView
mWebView = (WebView) findViewById(R.id.activity_article_web_view);
initWebView();
mWebView.loadDataWithBaseURL(null, myHtmlContent, "text/html", "utf-8", null);
// Handle to the close button
mCloseButton = (Button) findViewById(R.id.activity_article_close_button);
mCloseButton.setOnClickListener(this);
}
Детали проекта: minSDK: 7 (2.1)
Моя проблема заключается в том, что WebView и / или FrameLayout не заполняют_парта. Высота действия точно соответствует высоте, используемой для кнопки. Я едва могу прочитать первую строчку своей страницы. Моя проблема случается только на сотах 3.x. Ниже (<=2.3) действие заполняет родитель, и я вижу полный веб-сайт.
Я пытался создать WebView динамически. Я пытался установить LayoutParams в onCreate(). Ничего не изменилось. Я также пытался вызвать invalidate() для FrameLayout и WebView, но результат тот же...
2 ответа
Попробуйте использовать RelativeLayout как FrameLayout, возможно, он будет работать. Я не знаю, принимает ли FrameLayout fill_parent.
Это решение работало для меня:
Как я могу получить окно активности стиля Диалог, чтобы заполнить экран?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}