12

Android2.2以降でアイコンを選択するための簡単なコントロールが必要です。
Galleryは私にとってより良いソリューションでしたが、非推奨であり、代わりにHorizontalScrollViewandを使用する必要がありViewPagerます。
しかし、簡単に移行するにはどうすればよいですか?この場合、このクラスとコントロールを使用するにはどうすればよいですか?このテーマの完全な例を見つけようとしましたが、見つかりません。

4

2 に答える 2

28

デイブスミスからのこの要点は、 :ViewPagerに非常によく似た視覚的な結果を得るために使用する方法を示しています。Gallery

ギャラリースタイルのViewPager

一度に複数のページを表示するというトピックに関する私のブログ投稿を引用しますViewPager

彼のコンテナ(com.example.pagercontainer.PagerContainer)は、をラップしてそれ自体ViewPagerを呼び出すため、が1つの選択されたページにフォーカスされていても、境界を超えた座標を持つ他のページは、内に収まる限り表示されます。のサイズを、より小さくすることで、ページをそのサイズにサイズ変更し、他のページが表示される余地を残すことができます。ただし、側面に表示されるページを無視して、それ自体の表示範囲でのみスワイプイベントを処理するため、タッチイベントを少し支援する必要があります。setClipChildren(false);ViewPagerViewPagerPagerContainerViewPagerPagerContainerViewPagerPagerContainerViewPager

また、このandroid-developersスレッドをふるいにかけることもできます。ここでは、誰かが新しいAndroidバージョンでこれに関する問題を指摘しています。のバグのため、ViewPagerハードウェアアクセラレーションを無効にする必要があります。

于 2012-09-02T22:49:51.970 に答える
4

CommonsWareのリンクされた回避策には、タッチ処理とハードウェアアクセラレーションに関するさまざまな問題があります。私の意見では、より単純でエレガントな解決策は、ViewPagerに負のマージンを指定することです。

ViewPager.setPageMargin(
    getResources().getDimensionPixelOffset(R.dimen.viewpager_margin));

次に、このディメンションを自分のdimens.xml:で指定しました。

<dimen name="viewpager_margin">-64dp</dimen>

重複するページを補正するために、各ページのコンテンツビューには反対のマージンがあります。

android:layout_marginLeft="@dimen/viewpager_margin_fix"
android:layout_marginRight="@dimen/viewpager_margin_fix"

再びdimens.xml

<dimen name="viewpager_margin_fix">32dp</dimen>

viewpager_margin_fix(寸法は絶対寸法の半分であることに注意してくださいviewpager_margin。)

これは、オランダの新聞アプリDeTelegraafKrantで実装しました。

DeTelegraafKrantの電話の例タブレットの例

于 2014-01-06T11:32:17.090 に答える