Как использовать и динамически заполнять несколько представлений табуляции - PullRequest
1 голос
/ 30 декабря 2011

Мне нужно создать отдельный вкладок активности, в идеале создавать вкладки и представления, а также динамически заполнять представления виджетами. Важно иметь кнопку «Управление» в нижней части экрана.

Я могу создать три вкладки, используя три макета. Получить EditTexts для а) появления и b) выравнивания под вкладками [с использованием разделителя] было сложной задачей, чему способствовали существующие ответы в StackOverflow.

Что я сейчас не могу понять, так это почему EditTexts на втором макете / вкладке не отображаются, тогда как на первой вкладке это отображается?

Макет

<?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="wrap_content"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp" >
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
            <View
                android:id="@+id/separator"
                android:layout_below="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="2dip" />
            <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_below="@+id/separator"
            android:layout_above="@+id/btnSend" 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <LinearLayout
               android:id="@+id/tabview1"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical">
                <TextView
                android:id="@+id/ll1text"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:text="ll1text" />
            </LinearLayout>
            <LinearLayout
               android:id="@+id/tabview2"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical">
            <TextView
               android:id="@+id/ll2text"
               android:layout_width="wrap_content"
               android:layout_height="fill_parent"
               android:text="ll2text" />
            </LinearLayout>
            <RelativeLayout
               android:id="@+id/tabview3"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:orientation="vertical" >
            <TextView
                android:id="@+id/rl3text"
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent"
                android:layout_alignParentBottom="true"
                android:text="ll3text" />
            </RelativeLayout>
            </FrameLayout>
        <Button
            android:layout_alignParentBottom="true"
            android:text="Start Travelling"
            android:id="@+id/btnSend"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent" />
    </RelativeLayout>
</TabHost>

Код активности

    setContentView(R.layout.template);
    TabHost th = getTabHost();

th.addTab(th.newTabSpec("tab1").setIndicator("Customer").setContent(R.id.tabview1));
    LinearLayout ll = (LinearLayout) findViewById(R.id.tabview1);
    EditText et1 = new EditText (this);
    et1.setText("ET1");
    ll.addView(et1);
    TextView tv2 = new TextView(this);
    tv2.setText("et2:");
    ll.addView(tv2);
    EditText et2 = new EditText (this);
    et2.setText("ET2");
    ll.addView(et2);

    th.addTab(th.newTabSpec("tab2").setIndicator("Job").setContent(R.id.tabview2));
    ll = (LinearLayout) findViewById(R.id.tabview2);
    EditText et21 = new EditText (this);
    et21.setText("et21");
    ll.addView(et21);
    EditText et22 = new EditText (this);
    et22.setText("et22");
    ll.addView(et22);
    EditText et23 = new EditText (this);
    et23.setText("et23");
    ll.addView(et23);

    th.addTab(th.newTabSpec("tab3").setIndicator("Tab 3").setContent(R.id.tabview3));
    RelativeLayout rl = (RelativeLayout) findViewById(R.id.tabview3);
    EditText et3 = new EditText (this);
    et3.setText("ET3");
    rl.addView(et3);

    th.setCurrentTab(0);

Почему три EditTexts на второй вкладке не отображаются?

1 Ответ

0 голосов
/ 30 декабря 2011

Я думаю, проблема в том, что вы пытаетесь удержать все свои вкладки под одним действием. Вы должны разделить их следующим образом:

  • Используйте класс, который имеет дело с TabActivity
  • Создание разных действий для каждой из ваших вкладок
  • Добавить tabhost макет

Проверьте этот урок за помощью.

...