TabHost mit Tabs verschieben und Bilder einsetzen

derSoerrn

Aktives Mitglied
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:
Java:
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-.-
Java:
ts.setIndicator("Rechner", getResources().getDrawable(R.drawable.rechner));

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

Ich hoffe Ihr könnt mir helfen :)

LG
 

Mens

Mitglied
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"
android:eek:rientation="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

Mitglied
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

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

derSoerrn

Aktives Mitglied
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?
 

Mens

Mitglied
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

Aktives Mitglied
Java:
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?
 

Oben