9

の時刻表アプリケーションを作成し、ViewPagerIndicatorをフラグメントとして使用しています。しかし今、私は問題を抱えています。TabPageIndicator を中央に配置したいと考えています。このような: 例

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

これらの問題を解決する方法はまだ見つかっていません。onPageSelectedand で何かを試しましContextThemeWrapperたが、うまくいきません。(私の使い方が間違っているのかもしれません。)

これはすべて可能ですか、それとも ViewPagerIndicator 以外のものに目を向けるべきですか? (ViewPagerIndicator を使用しない別のオプションも歓迎します)。

画像のアプリは Untis Mobile で、PlayStore で見つけることができます。私はすでにクリエイターにどのようにそれを行っているか尋ねましたが、アプリはオープンソースではないと言いました. (しかし、私は彼らがTwoDScrollViewでそれを行うことをソースで見つけましたが、よくわかりません)

編集:

スタイリングは で固定vpiTabPageIndicatorStyle。(XDA 開発者の助けを借りて!)

20 個のアイテムを追加すると、真ん中にとどまりますが、アイテム 4 からアイテム 17 まで、アイテム 1、2、3、18、19、20 は真ん中にありません。見る:

違う

最初と最後のアイテムが真ん中にくるように、3 つの空のアイテム (または空のスペース) を追加できますか? このようなもの (Untis Mobile アプリから):

良い

(すでに試してみandroid:paddingLeftましvpiTabPageIndicatorStyleたが、うまくいきません)

TabPageIndicator が中央に設定されることはわかってviewPager.setCurrentItem(total/2)いますが、その後は中央にとどまり、他の日を選択することはできません (私は で呼び出しますonPageScrolled)。したがって、スクロールするときに、選択したものが真ん中にある必要があります。これは可能ですか?

4

3 に答える 3

6

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

ここに画像の説明を入力

于 2013-11-04T09:36:45.740 に答える
2

そうすれば、viewpagerindicator は必要ありません。Amulya Khare がアクティビティで提案したように水平スクロール ビューを使用し、スクロールが発生したときにフラグメントを置き換えます。

アクティビティのレイアウトは次のようになります。

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

リスナーを wheelview に設定すると、変更が発生したときにフラグメントをアクティビティのフレームレイアウトに配置できます。

于 2013-11-11T09:37:39.420 に答える
-1

次のように使用します。

TabPagerIndicator tbi;
   ViewPager pager;

onCreate()このようにして

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

これがうまくいくことを願っています。:D

于 2013-11-16T20:17:36.487 に答える