Android2.2以降でアイコンを選択するための簡単なコントロールが必要です。
Galleryは私にとってより良いソリューションでしたが、非推奨であり、代わりにHorizontalScrollView
andを使用する必要がありViewPager
ます。
しかし、簡単に移行するにはどうすればよいですか?この場合、このクラスとコントロールを使用するにはどうすればよいですか?このテーマの完全な例を見つけようとしましたが、見つかりません。
2 に答える
デイブスミスからのこの要点は、 :ViewPager
に非常によく似た視覚的な結果を得るために使用する方法を示しています。Gallery
一度に複数のページを表示するというトピックに関する私のブログ投稿を引用しますViewPager
:
彼のコンテナ(
com.example.pagercontainer.PagerContainer
)は、をラップしてそれ自体ViewPager
を呼び出すため、が1つの選択されたページにフォーカスされていても、境界を超えた座標を持つ他のページは、内に収まる限り表示されます。のサイズを、より小さくすることで、ページをそのサイズにサイズ変更し、他のページが表示される余地を残すことができます。ただし、側面に表示されるページを無視して、それ自体の表示範囲でのみスワイプイベントを処理するため、タッチイベントを少し支援する必要があります。setClipChildren(false);
ViewPager
ViewPager
PagerContainer
ViewPager
PagerContainer
ViewPager
PagerContainer
ViewPager
また、このandroid-developersスレッドをふるいにかけることもできます。ここでは、誰かが新しいAndroidバージョンでこれに関する問題を指摘しています。のバグのため、ViewPager
ハードウェアアクセラレーションを無効にする必要があります。
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で実装しました。