gpt4 book ai didi

android - 将 TabHost 控件添加到 Linearlayout/在 tabhost 选项卡下添加布局

转载 作者:太空狗 更新时间:2023-10-29 15:09:51 26 4
gpt4 key购买 nike

我创建了一个应用程序,其中包含四个加载了特定 WebView 的选项卡。我计划在选项卡下方添加广告。在我的代码中,我将内容 View 设置为创建为 TabHost 的 ViewGroup。如果我将此 Viewgroup 添加到 linearlayout,则应用程序已因 TabHost.add(TabSpec) 获取 NullPointer 异常而崩溃。这是代码。

 public View addTabBarView(Context context)
{
m_vForm = _createTABForm(context);
return m_vForm;
}
private ViewGroup _createTABForm(Context context) {

sTabHost = new TabHost(context,null);
sTabHost.setLayoutParams(
new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
HorizontalScrollView sScrollView = new HorizontalScrollView(context);
LinearLayout.LayoutParams sScrollViewParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
sScrollView.setVerticalScrollBarEnabled(false);
sScrollView.setHorizontalScrollBarEnabled(false);
sScrollView.setScrollBarStyle(TRIM_MEMORY_UI_HIDDEN);
sScrollView.setFillViewport(true);

TabWidget tabWidget = new TabWidget(context);
LinearLayout.LayoutParams sTabWidgetParams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tabWidget.setId(android.R.id.tabs);
sScrollView.addView(tabWidget, sTabWidgetParams);
sTabHost.addView(sScrollView, sScrollViewParams);
FrameLayout frameLayout = new FrameLayout(context);
frameLayout.setId(android.R.id.tabcontent);
final float scale = context.getResources().getDisplayMetrics().density;
int paddingtop = (int) (64 * scale + 0.5f);
frameLayout.setPadding(0, paddingtop, 0, 0);
sTabHost.addView(frameLayout, new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

sTabHost.setup();
return sTabHost;
}

public addTabItem(final String url, String tabTitle, Drawable tabIcon)
{
TabSpec ts1 = sTabHost.newTabSpec(tabTitle);
if(tabIcon==null)
ts1.setIndicator(tabTitle);
else
ts1.setIndicator(tabTitle,tabIcon);
ts1.setContent(new TabHost.TabContentFactory(){
@SuppressWarnings("deprecation")
public View createTabContent(String tag)
{
//Creating webview inside a layout
}
});
sTabHost.addTab(ts1); //Here throws NullPointer exception.
sTabHost.setOnTabChangedListener(this);
}

我怎样才能达到我的要求?

最佳答案

您没有使用 XML 布局吗?它比你上面的更高效和整洁......

您还没有包含任何 logcat,所以没有什么可继续的,但在我看来,问题是您的 addTabItem 试图随意制作一些东西并将其用作内容,而您真的想将 frameLayout 用作content 所以尝试将其传递到方法中并将其设置为内容

关于android - 将 TabHost 控件添加到 Linearlayout/在 tabhost 选项卡下添加布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com