Проблема с вкладками Android - программное изменение содержимого - PullRequest
0 голосов
/ 13 января 2012

РЕДАКТИРОВАТЬ: я решил # 2 ниже, просто изменив фон родительского ScrollView TextView.

Я весь день гуглял, но никак не могу найти ответ на этот вопрос. Это должно быть просто.

Мое действие содержит фрагмент, состоящий из элемента управления с вкладками (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 всегда возвращается как ноль.

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>

Спасибо за любые предложения !!

Bryan

1 Ответ

0 голосов
/ 17 января 2012

Очевидно, что это должно быть tabs.getTabContentView () вместо tabHost.getTabWidget ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...