# TabHost mit Tabs verschieben und Bilder einsetzen



## derSoerrn (9. Nov 2012)

Hallo zusammen,

ich bin gerade dabei mit ein paar Leuten eine kleine Android-App zu schreiben. Wir sind leider alle Anfänger...

Nun habe ich folgendes Problem: Ich habe ein TabHost mit 3 Tabs. Nun möchte ich dieses TabHost nach unten auf den Bildschirm packen, wie dies z.B. bei iOS-Apps, wie dem Appstore oder so ist. Da aber Android Handys unterschiedliche Displayauflösungen haben wäre es ja blöd, wenn ich ihm eine feste Position zuweise.
Kann man sich irgendwie die die Höhe des Displays geben lassen?

Und anschließend muss ich dann doch nur schreiben:

```
th.setX("hoehe des Displays" - th.getHeight());
```
oder?

Mein zweites Problem besteht darin, dass ich den einzelnen Tabs Bilder zuweisen will. Ich habe folgende Methode benutzt, allerdings ist nichts passiert-.-

```
ts.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner));
```

Und ja, das Bild, was ich laden will ist vorhanden 

Ich hoffe Ihr könnt mir helfen 

LG


----------



## Mens (12. Nov 2012)

Du musst ein RelativeLayout benutzen, und dann bei dem TabWidget musst du layout_alignParentBottom auf true setzen. Hier mein Code den ich dafür benutze, bei mir funkts :
[XML]<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            androidrientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:layout_alignParentBottom="true">
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <LinearLayout
                    android:id="@+id/tab_id_1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab_id_2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab_id_3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                </LinearLayout>
            </FrameLayout>
        </RelativeLayout>
    </TabHost>

</RelativeLayout>
[/XML]


----------



## Mens (12. Nov 2012)

Und zu deinem zweiten Problem, versuch mal das:

th = (TabHost) findViewById(android.R.id.tabhost);
TabSpec ts1 = th.newTabSpec("tab_id_1");
TabSpec ts2 = th.newTabSpec("tab_id_2");
TabSpec ts3 = th.newTabSpec("tab_id_3");

ts1.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner));
ts2.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner));
ts3.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner));

th.addTab(ts1);
th.addTab(ts2);
th.addTab(ts3);


----------



## Mens (12. Nov 2012)

Achja habe was vergessen, du musst deiner ts einen Intent übergeben :
ts1.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner))*.setContent(deinIntent)*;


----------



## derSoerrn (14. Nov 2012)

Danke für die Antwort  Das mit dem nach unten setzten funktioniert soweit. Das mit dem Bild jedoch nicht... Was soll ich für einen Intent nehmen?


----------



## Massta (14. Nov 2012)

[OT]Ich klink mich mal ein[/OT]


----------



## Mens (15. Nov 2012)

derSoerrn hat gesagt.:


> Danke für die Antwort  Das mit dem nach unten setzten funktioniert soweit. Das mit dem Bild jedoch nicht... Was soll ich für einen Intent nehmen?



Ja zum Beispiel deine Activity Rechner(oder wie sie auch heisst) :

Intent intentRechner = new Intent(getApplicationContext(),RechnerActivity.class);
ts1.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner)).setContent(intentRechner);

Du musst das für jede TabSpec machen.


----------



## derSoerrn (16. Nov 2012)

```
ts1.setContent(R.id.tab1);
Intent i = new Intent(getApplicationContext(), Rechner.class);
ts1.setIndicator("Rechner", getResources().getDrawable(R.drawable.ic_launcher)).setContent(i);
//ts1.setIndicator("Rechner");
th.addTab(ts1);
```

mein Code für das Bild. Allerdings stürzt die App ab, sobald ich es so schreibe.

Was ist falsch?


----------

