9

のタイムテーブルアプリケーションを作成していますが、ViewPagerIndicatorをフラグメントとして使用しています。しかし、今私は問題がある、私はTabPageIndicatorを中心にしたい。このように: ExampleViewPagerIndicator - TabPageIndicatorを中央に設定

そして、個々のタブの幅と高さを設定したいと思います。そしてそのタブを選択/押された状態をサポートするドロアブルに設定します。

私はまだこれらの問題を解決することができませんでした。私はonPageSelectedContextThemeWrapperで試してみましたが、うまくいきません。 (たぶん私はそれを正しく使用していないだろう)。

ViewPagerIndicator以外のものを作成するのは可能ですか? (ViewPagerIndicatorのない他のオプションも歓迎です)。

画像のアプリはUntis Mobileで、PlayStoreにあります。 私はすでにクリエイターにどのようにしているのか尋ねましたが、アプリはオープンソースではないと言いました。

スタイリングはvpiTabPageIndicatorStyleで固定されています

を編集(しかし、私は、彼らはTwoDScrollViewでそれを行うソースで見つかっているが、私はわかりません)。 (XDA開発者の助けを借りて)

私は20のアイテムを追加すると、それはアイテム4からアイテム17までのアイテム1、2、3、18、19、20の中間にあります。参照:

Wrong

は、私が最初と最後の項目は、中央にあることを確実にするために3つの空のアイテム(または空のスペース)を追加することはできますか? (Untisモバイルアプリからの)このような何か:

Good

(私はすでにvpiTabPageIndicatorStyleandroid:paddingLeftを試みたが、それは動作しません)私はviewPager.setCurrentItem(total/2)がTabPageIndicatorを設定することを知っている

途中で途中で止まってしまい、他の日を選択することができません(私はonPageScrolledと呼んでいます)。だから私はあなたが選択したものをスクロールするときに中央に来る必要があります。これは可能ですか?

答えて

6

あなたが探しているウィジェットは、アンドロイドの水平ホイールに似ています。 android-spinnerwheelの実装があります。これは必要なものです。

enter image description here

2

その後、あなたはviewpagerindicatorは必要ありません。 Amulya Khareがあなたの活動で示唆したように水平スクロールビューを使用し、スクロールが発生するとフラグメントを置き換えます。

wheelviewすると、変更が発生したときに、あなたの活動にでframeLayoutであなたの破片を置くことができるリスナーを設定し
<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> 

あなたの活動のレイアウトは次のようである可能性があります。

-1

はこのようにそれを使用してください:onCreate()

TabPagerIndicator tbi; 
    ViewPager pager; 

を行う私はこれがあなたのために働くことを願っています。この

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

のように。 :D

関連する問題