Мне нужно простое управление для выбора значка на Android 2.2 и выше.
Галерея была лучшим решением для меня, но она устарела, и вместо этого я должен использовать HorizontalScrollView и ViewPager.
Но как легко мигрировать? Как использовать эти классы и элементы управления в этом случае? Я пытаюсь найти полный пример для этого предмета, но я не могу его найти.
Как перейти из Галереи в HorizontalScrollView & ViewPager?
Ответ 1
Этот метод от Dave Smith показывает способ использования ViewPager, чтобы визуальные результаты были очень похожи на Gallery:

Цитата мое сообщение в блоге о показе нескольких страниц за раз в ViewPager:
Его контейнер (
com.example.pagercontainer.PagerContainer) обертываетViewPagerи вызываетsetClipChildren(false);сам по себе, поэтому даже еслиViewPagerсосредоточен на одной выбранной странице, другие страницы, у которых есть координаты за пределамиViewPager, по-прежнему видимые, если они соответствуют размеруPagerContainer. Если размерViewPagerменьшеPagerContainer,ViewPagerможет изменять размер страниц до такого размера, оставляя место для просмотра других страниц.PagerContainer, тем не менее, нужно немного помочь с событиями касания, посколькуViewPagerбудет обрабатывать события салфетки только по своим видимым границам, игнорируя любые видимые на сторонах страницы.
Вы также можете просеять через этот поток разработчиков android-разработчиков, где кто-то указал на проблему с новыми версиями Android. Вам необходимо отключить аппаратное ускорение из-за ошибки в ViewPager.
Ответ 2
Существуют различные проблемы с сенсорной обработкой и аппаратным ускорением в связанном с 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.)
Мы применили этот в приложении для голландской газеты De Telegraaf Krant:

