我正在尝试在包含4个标签的tabhost中使用webview - 所有标签都链接到同一个webview。
除了一个问题外,这很好: 在启动时,webview是黑色的。 单击选项卡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>
更新 将webview放在framelayout之外会导致应用程序在启动时崩溃并出现以下错误: java.lang.RuntimeException:无法创建选项卡内容,因为找不到ID为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));
答案 0 :(得分:2)
突破!
我在另一篇SO帖子中找到了我自己的问题的答案,我过去没有偶然发现: Why is my TabHost's FrameLayout's only child loaded with visibility = View.GONE?
只需设置:
tabHost.getCurrentView().setVisibility(View.VISIBLE);
解决了这个问题!
答案 1 :(得分:0)
我遇到了类似的问题。按照建议,我把 tabHost.getCurrentView()。setVisibility(View.VISIBLE); 添加到代码中,webview仍然是空白。经过几次搜索后,this answer救了我。事实证明,将 android:layout_height =“wrap_content”设置为webview非常重要。