9

Faccio un'applicazione di orario per e sto usando ViewPagerIndicator come frammento. Ma ora ho un problema, voglio mettere TabPageIndicator al centro. In questo modo: ExampleViewPagerIndicator - Imposta TabPageIndicator al centro

E vorrei impostare la larghezza e l'altezza della singola scheda. E imposta quella scheda su un drawable che supporta gli stati selezionati/premuti.

Non l'ho ancora trovato per risolvere questi problemi. Ho provato qualcosa con onPageSelected e ContextThemeWrapper ma questo non funziona. (Forse non sto usando correttamente).

Tutto questo è possibile o devo cercare qualcosa di diverso da ViewPagerIndicator? (Un'altra opzione senza ViewPagerIndicator è anche benvenuta).

L'app sull'immagine è Untis Mobile e può essere trovata sul PlayStore. Ho già chiesto ai creatori come lo fanno, ma hanno detto che l'app non è open source. (Ma ho trovato nella fonte che lo fanno con TwoDScrollView, ma non sono sicuro)

Edit:

Lo stile è fissato con vpiTabPageIndicatorStyle. (Con l'aiuto di XDA Developers!)

Quando aggiungo 20 elementi rimane al centro ma solo dal punto 4 all'articolo 17, gli elementi 1, 2, 3, 18, 19, 20 non sono nel mezzo. Vedi:

Wrong

posso aggiungere un 3 elementi vuoti (o spazio vuoto) per garantire che i primi e gli ultimi articoli sono nel mezzo? Qualcosa di simile a questo (dal Untis app per dispositivi mobili):

Good

(ho già provato android:paddingLeft in vpiTabPageIndicatorStyle ma che non funziona)

So che viewPager.setCurrentItem(total/2) sarà impostare la TabPageIndicator nel mezzo ma poi rimane a metà e non riesco a selezionare un altro giorno (lo chiamo in onPageScrolled). Quindi voglio scorrere mentre quello selezionato deve essere nel mezzo. È possibile?

risposta

6

Il widget che stai cercando è simile alla ruota orizzontale di Android. C'è un'implementazione allo android-spinnerwheel che può essere quello che ti serve.

enter image description here

2

Allora non hai bisogno di un viewpagerindicator. Utilizzare una vista di scorrimento orizzontale come suggerito da Amulya Khare nella propria attività e sostituire i frammenti quando si verifica lo scorrimento.

Il layout attività potrebbe essere come:

<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> 

Impostare un listener per wheelview e quando si verifica il cambiamento si può mettere i frammenti in framelayout nella vostra attività.

-1

usare in questo modo:

TabPagerIndicator tbi; 
    ViewPager pager; 

in onCreate() ti piace questo

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

Spero che questo funzionerà per voi. : D

Problemi correlati