Определите содержимое Tabhost / TabWidget + в XML-файле без какого-либо кода - это возможно? - PullRequest
4 голосов
/ 09 августа 2011

Можно ли определить макет вкладки только в XML-файле макета? Каждый раз, когда я нахожу учебник tabhost, он работает только с некоторым дополнительным кодом Java.

Вот мой test.xml, в котором нет вкладок:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/linearLayout">
    <TextView android:text="@string/app_name" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/textView1" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
    <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent">
        <TabWidget android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@android:id/tabs">
        </TabWidget>
        <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/tabcontent">
            <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/tab1">
                <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="TAB 1"/>
            </LinearLayout>   
            <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/tab2">
                <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="TAB 2"/>
            </LinearLayout>
        </FrameLayout>
    </TabHost>
</LinearLayout>

1 Ответ

1 голос
/ 12 апреля 2012

Это невозможно, так как TabSpec - это класс держателя, который представляет каждую вкладку в TabHost.и не существует xml-тегов, эквивалентных TabSpec, которые должны быть помещены в макет xml.

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

IllegalArgumentException: you must specify a way to create the tab content

, либо

IllegalArgumentException: you must specify a way to create the tab indicator.
...