Webview в TabHost = начиная с черного экрана - PullRequest
3 голосов
/ 07 октября 2011

Я пытаюсь использовать веб-просмотр внутри вкладки, которая имеет 4 вкладки - все связаны с одним веб-представлением.

Это замечательно, за исключением одной проблемы: при запуске веб-просмотр черный.Нажатие на вкладку 2,3 или 4 делает его «ожить».

Мое быстрое решение состояло в том, чтобы использовать setCurrentTab (1) и затем вернуться к 0, но это выглядит некрасиво, поэтому я решил, что с таким же успехом могу попросить решение, так как не могу найти что-либо в Интернете.

Как это можно исправить?Ниже приведен мой XML:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1">
        <android.webkit.WebView android:layout_width="fill_parent" android:id="@+id/webview" android:layout_height="fill_parent" android:scrollbars="none"/>
    </FrameLayout>
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        />
</LinearLayout>
</TabHost>

Обновление: При размещении веб-просмотра за пределами framelayout приложение вызывает сбой при запуске со следующей ошибкой: java.lang.RuntimeException: не удалось создать вкладкусодержимое, потому что не удалось найти представление с идентификатором 2131099648

Это происходит, когда я в методе onCreate инициализирую свой tabhost так:

    mTabHost = getTabHost();
    mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("Tab1", getResources().getDrawable(R.drawable.ligenu)).setContent(R.id.webview));
    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Tab2", getResources().getDrawable(R.drawable.mad)).setContent(R.id.webview));
    mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("Tab3", getResources().getDrawable(R.drawable.godpris)).setContent(R.id.webview));
    mTabHost.addTab(mTabHost.newTabSpec("tab_test4").setIndicator("Tab4", getResources().getDrawable(R.drawable.om)).setContent(R.id.webview)); 

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Прорыв!

Я нашел ответ на свой вопрос в другом посте SO, на который я не споткнулся в прошлом: Почему единственный дочерний элемент FrameLayout в TabHost загружен с видимостью = View.GONE?

Простая настройка:

tabHost.getCurrentView().setVisibility(View.VISIBLE);

Это решит проблему!

0 голосов
/ 30 сентября 2012

У меня была похожая проблема. Как и предполагалось, я поместил tabHost.getCurrentView (). SetVisibility (View.VISIBLE); в код, веб-представление по-прежнему будет пустым. После нескольких поисков этот ответ спас меня. Оказывается, важно установить android: layout_height = "wrap_content" для веб-просмотра.

...