Мне нужно простое управление для выбора значка на 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: