Frage

Ich verwende Google exmaple von Hallo, TabWidget aber es verändert wie folgt aussehen:

main.xml:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView 
                android:text="@+layout/text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
            <TextView 
                android:id="@+id/textview2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:text="this is another tab" />
            <TextView 
                android:id="@+id/textview3"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:text="this is a third tab" />
        </FrameLayout>
    </LinearLayout>
</TabHost>

Java-Datei:

public class HelloTabWidget extends TabActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost mTabHost = getTabHost();

        mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(R.layout.text));
        mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));
        mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB 3").setContent(R.id.textview3));

        mTabHost.setCurrentTab(0);
    }
}

und hier ist die text.xml in res / Layout:

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <TextView
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="This is Tab 1" />
</LinearLayout>

Was ich versuche im Grunde zu tun hat jeden Registerkarte eine eigene XML-Datei beziehen und nicht alle in main.xml, aber der Text in dem ersten Registerkarte wird nicht angezeigt.

War es hilfreich?

Lösung

Versuchen Sie, jede Registerkarte haben, um seine eigene Activity verweisen? Wenn ja, können Sie eine Absicht als Inhalt für jede Registerkarte ein:

intent = new Intent().setClass(this, Test.class);       
spec = tabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(intent);
        tabHost.addTab(spec);

Natürlich würden Sie dann eine Klasse haben müssen den Namen Test (oder was auch immer), dass Sätze wie das Layout test.xml.

public class Test extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
    }
}

Dieses Tutorial helfen Ihnen weiter, wenn dies der Art von Szenario, dass Sie einrichten versuchen.

Andere Tipps

Da ist drei Optionen für die Registerkarten, um die integrierte in Tab Host verwendet wird.

  1. Mehrere Ansichten auf einer einzigen Aktivität mit einer Layout-Datei
  2. Mehrere Aktivitäten
  3. gebaut Benutzerdefinierte Ansichten in einem TabContentFactory

Es klingt wie Sie # 3 wollen. Was Sie tun müssen, ist so etwas wie folgt aus:

setContent(new TabHost.TabContentFactory() {
    public View createTabContent(String tag)
    {
        View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text);
        // Setup the view here
        return view;
    }});
View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text);

Das ist nicht ganz richtig als LayoutInflater.inflate zwei Parameter nimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top