Danny787
Ensign
- Registriert
- Jan. 2007
- Beiträge
- 180
Hallo zusammen,
ich habe folgendes Anliegen:
Ich habe einen Tabhost, der aus 5 Tabs besteht. Nun möchte ich 3 von den 5 Tabs immer anzeigen lassen, und sobald die Tabs von links nach rechts oder umgekehrt horizontal gescrollt werden sollen erst die beiden anderen Tabs sichtbar werden.
Die Tabs habe ich mit einer "HorizontalScrollView" "scrollbar" gemacht:
Hier meine TabWidget-Klasse mit den 5 Tabs:
Nur will ich die ersten 3 Tabs immer anzeigen lassen, und die letzten beiden sollen erst sichtbar werden, sobald die Tabs horizontal gescrollt werden.
Ich hab mir das folgendermaßen vorgestellt:
//Zuerst Tabs 4 und 5 invisible machen
Und nun kommt der Punkt wo ich nicht weiß wie ich weitermachen muss. Jetzt müsste ich ja irgendwie einer Prüfung durchführen ob die Tabs gescrollt werden (z.B. mit nem onScrollListener oder so) und sobald dies der Fall ist werden die Tabs dann wieder auf Visible gesetzt:
Hat jemand eine Idee wie ich diesen letzten Schritt bewerkstelligen kann? Oder vielleicht sogar einen ganz anderen/einfacheren Ansatz?
Danke schon mal im Voraus :-)
ich habe folgendes Anliegen:
Ich habe einen Tabhost, der aus 5 Tabs besteht. Nun möchte ich 3 von den 5 Tabs immer anzeigen lassen, und sobald die Tabs von links nach rechts oder umgekehrt horizontal gescrollt werden sollen erst die beiden anderen Tabs sichtbar werden.
Die Tabs habe ich mit einer "HorizontalScrollView" "scrollbar" gemacht:
Code:
<?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="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<HorizontalScrollView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:fillViewport="true"
android:scrollbars="none">
<TabWidget android:id="@android:id/tabs"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</HorizontalScrollView>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>
Hier meine TabWidget-Klasse mit den 5 Tabs:
Code:
public class HelloTabWidget extends TabActivity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab);
Resources res = getResources(); // Resource Objekt
TabHost tabHost = getTabHost(); // Activity TabHost
TabHost.TabSpec spec; // TabSpec für Tabs
Intent intent;
// Initialisiert "Notizen" Tabansicht und fügt zum Tabhost hinzu
intent = new Intent().setClass(this, NoteActivity.class);
spec = tabHost.newTabSpec("note").setIndicator("Notizen",
res.getDrawable(R.drawable.ic_tab_note))
.setContent(intent);
tabHost.addTab(spec);
// Initialisiert "Stundenplan" Tabansicht und fügt zum Tabhost hinzu
intent = new Intent().setClass(this, ScheduleActivity.class);
spec = tabHost.newTabSpec("schedule").setIndicator("Stundenplan",
res.getDrawable(R.drawable.ic_tab_schedule))
.setContent(intent);
tabHost.addTab(spec);
// Initialisiert "Ausfallende Vorlesungen" Tabansicht und fügt zum Tabhost hinzu
intent = new Intent().setClass(this, CanceledCoursesActivity.class);
spec = tabHost.newTabSpec("canceled").setIndicator("Ausfallende Vorlesungen",
res.getDrawable(R.drawable.ic_tab_canceled))
.setContent(intent);
tabHost.addTab(spec);
// Initialisiert "Notenspiegel" Tabansicht und fügt zum Tabhost hinzu
intent = new Intent().setClass(this, GradesActivity.class);
spec = tabHost.newTabSpec("grades").setIndicator("Notenspiegel",
res.getDrawable(R.drawable.ic_tab_grades))
.setContent(intent);
tabHost.addTab(spec);
// Initialisiert "Prüfungsplan" Tabansicht und fügt zum Tabhost hinzu
intent = new Intent().setClass(this, ExamScheduleActivity.class);
spec = tabHost.newTabSpec("exam").setIndicator("Prüfungsplan",
res.getDrawable(R.drawable.ic_exam))
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(2);
Nur will ich die ersten 3 Tabs immer anzeigen lassen, und die letzten beiden sollen erst sichtbar werden, sobald die Tabs horizontal gescrollt werden.
Ich hab mir das folgendermaßen vorgestellt:
//Zuerst Tabs 4 und 5 invisible machen
Code:
tabHost.getTabWidget().getChildAt(3)
.setVisibility(View.GONE);
tabHost.getTabWidget().getChildAt(4)
.setVisibility(View.GONE);
Und nun kommt der Punkt wo ich nicht weiß wie ich weitermachen muss. Jetzt müsste ich ja irgendwie einer Prüfung durchführen ob die Tabs gescrollt werden (z.B. mit nem onScrollListener oder so) und sobald dies der Fall ist werden die Tabs dann wieder auf Visible gesetzt:
Code:
tabHost.getTabWidget().getChildAt(3)
.setVisibility(View.VISIBLE);
tabHost.getTabWidget().getChildAt(4)
.setVisibility(View.VISIBLE);
Hat jemand eine Idee wie ich diesen letzten Schritt bewerkstelligen kann? Oder vielleicht sogar einen ganz anderen/einfacheren Ansatz?
Danke schon mal im Voraus :-)