Android标签问题 - 以编程方式更改内容

时间:2012-01-12 23:28:09

标签: android tabs textview

编辑:我通过简单地更改TextView的父ScrollView的背景解决了下面的#2。

我一整天都在谷歌搜索,但似乎无法找到答案。这应该很简单。

我的活动包含一个由选项卡式控件(TabHost,TabWidgets等)组成的片段。每个选项卡上都有一个简单的滚动TextView。我们的想法是让一些标签包含用户可以滚动浏览的不同类别的文本。我已经能够设置标签等,但有两个我似乎无法解决的问题。

1)我无法弄清楚如何以编程方式更改选项卡TextView的内容(来自拥有该片段的Activity)。我已经尝试在我的主机活动中创建一个FragmentManager,找到片段,将片段转换为我的片段类,然后调用片段类中应该更改文本的函数。这个功能只是这样做:

TextView textView = (TextView)tabHost.getTabWidget().getChildAt(tabNumber).findViewById(R.id.dashboard_fragment_4_textView);
    if(textView!=null) textView.setText(text);

这不起作用; textView始终返回null。

2)我相信布局问题。每个选项卡上的我的TextView不会填充父项;它只是包装文本内容。这不是什么大问题,但我希望TextView可用的整个屏幕区域具有特定的背景颜色。也许有更好的方法来处理这个???就像让TextView的背景透明,然后在TextView后面有一些正确的颜色?我不知道......我到了。

以下是每个标签的xml布局:

<TabHost   xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/tabHost"
       android:layout_width="match_parent" 
       android:layout_height="match_parent"
       >
<LinearLayout android:orientation="horizontal"
              android:layout_width="match_parent" 
              android:layout_height="match_parent">
    <TabWidget android:id="@android:id/tabs" 
               android:layout_height="match_parent" 
               android:layout_width="wrap_content"
               android:gravity="left"                   
               android:layout_weight="0" />
    <FrameLayout android:id="@android:id/tabcontent"
                 android:layout_height="match_parent" 
                 android:layout_width="0dp"
                 android:layout_weight="1">

        <ScrollView
            android:id="@+id/dashboard_fragment_4_scrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <TextView
                android:id="@+id/dashboard_fragment_4_textView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/Linen"
                android:textColor="@color/Black"
                android:textSize="20dp"
                android:text="TextView" />

        </ScrollView>

    </FrameLayout>
</LinearLayout>

感谢您的任何建议!!

布赖恩

1 个答案:

答案 0 :(得分:0)

显然,它应该是tabs.getTabContentView()而不是tabHost.getTabWidget()