9

Ich mache eine Fahrplananwendung für und ich verwende ViewPagerIndicator als Fragment. Aber jetzt habe ich ein Problem, ich möchte den TabPageIndicator in den Mittelpunkt stellen. So: ExampleViewPagerIndicator - Setzen Sie den TabPageIndicator auf das Zentrum

Und ich würde gerne die einzelnen Tab Breite und Höhe einstellen. Setzen Sie diese Registerkarte auf einen Zeichensatz, der ausgewählte/gedrückte Zustände unterstützt.

Ich habe es noch nicht gefunden, um diese Probleme zu lösen. Ich habe etwas mit onPageSelected und ContextThemeWrapper versucht, aber das funktioniert nicht. (Vielleicht verwende ich es nicht richtig).

Ist das alles möglich zu machen oder sollte ich etwas anderes als ViewPagerIndicator suchen? (Eine andere Option ohne ViewPagerIndicator ist ebenfalls willkommen).

Die App auf dem Bild ist Untis Mobile und kann auf dem PlayStore gefunden werden. Ich habe die Entwickler bereits gefragt, wie sie es machen, aber sie sagten, die App sei nicht Open Source. (Aber ich habe in der Quelle gefunden, dass sie es mit TwoDScrollView tun, aber ich bin mir nicht sicher)

Edit:

Das Styling ist fest mit vpiTabPageIndicatorStyle. (Mit Hilfe von XDA Developers!)

Wenn ich 20 Elemente hinzufüge, bleibt es in der Mitte, aber nur von Element 4 bis Element 17, Elemente 1, 2, 3, 18, 19, 20 sind nicht in der Mitte. Siehe:

Wrong

Kann ich eine 3 leere Elemente hinzuzufügen (oder leeren Raum), um sicherzustellen, dass die ersten und letzten Elemente in der Mitte sind? So etwas wie diese (von der Untis Mobil-App):

Good

(ich habe bereits versucht android:paddingLeft in vpiTabPageIndicatorStyle aber das funktioniert nicht)

Ich weiß, dass viewPager.setCurrentItem(total/2) das TabPageIndicator eingestellt wird in der Mitte, aber dann bleibt es in der Mitte und ich kann keinen anderen Tag auswählen (ich nenne es onPageScrolled). So will ich beim Scrollen das ausgewählte muss man in der Mitte sein. Ist das möglich?

Antwort

6

Das Widget, das Sie suchen, ist ähnlich wie das android horizontale Rad. Es gibt eine Implementierung bei android-spinnerwheel, die sein kann, was Sie brauchen.

enter image description here

2

Dann brauchen Sie nicht eine viewpagerindicator. Verwenden Sie eine horizontale Bildlaufansicht, wie sie von Amulya Khare in Ihrer Aktivität vorgeschlagen wurde, und ersetzen Sie Fragmente beim Scrollen.

Ihre Aktivität Layout könnte wie:

<LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <SomeWheelView 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      /> 
     <SomeStaticIndicatorView 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      /> 
     <FrameLayout 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      /> 
</LinearLayout> 

einen Zuhörer Set wheelview und bei Änderung Sie Ihre Fragmente in framelayout in Ihrer Tätigkeit setzen.

-1

Benutzen Sie es wie folgt aus:

TabPagerIndicator tbi; 
    ViewPager pager; 

in onCreate() wie tun diese

tbi=(TabPagerIndicator)findViewById(R.id.something); 
    tbi.setViewPager(pager); 

Ich hoffe, dass dies für Sie funktionieren wird. : D