Все, что нам нужно: ViewPager , TabLayout и 2 drawables для выбранных точек и точек по умолчанию.
Во-первых, мы должны добавить TabLayout
в наш макет экрана и подключить его с ViewPager
. Мы можем сделать это двумя способами:
TabLayout
вViewPager
<androidx.viewpager.widget.ViewPager
android:id="@+id/photos_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</androidx.viewpager.widget.ViewPager>
В этом случае
TabLayout
будет автоматически связаноViewPager
, ноTabLayout
будет рядомViewPager
, а не над ним.
TabLayout
<androidx.viewpager.widget.ViewPager
android:id="@+id/photos_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
В этом случае мы можем положить
TabLayout
куда угодно, но мы должны подключитьсяTabLayout
с помощьюViewPager
программного обеспечения
ViewPager pager = (ViewPager) view.findViewById(R.id.photos_viewpager);
PagerAdapter adapter = new PhotosAdapter(getChildFragmentManager(), photosUrl);
pager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(pager, true);
Как только мы создали наш макет, мы должны подготовить наши точки. Таким образом , мы создаем три файла: selected_dot.xml
, default_dot.xml
и tab_selector.xml
.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/colorAccent"/>
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@android:color/darker_gray"/>
</shape>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selected_dot"
android:state_selected="true"/>
<item android:drawable="@drawable/default_dot"/>
</selector>
Теперь нам нужно добавить только 3 строки кода TabLayout
в нашу XML-разметку.
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
Для ViewPager2
чтения этой статьи:
ViewPager (2) с индикатором точек на medium.com
Голоса приветствуются ;-)
app:tabMaxWidth
в TabLayoutapp:tabMaxWidth="30dp" app:tabTextColor="@color/transparent2" app:tabSelectedTextColor="@color/transparent2" app:tabIndicatorHeight="0dp" android:layout_gravity="bottom|center"
Сначала создайте макет, в котором укажите один LinerLayout для точек, которые отображаются поверх вашего View Pager.
После этого создайте 2 рисунка
1. Не выбранный Drawable
2. Выбранный Drawable
После этого установите адаптер
Создайте метод setupPagerIndidcatorDots ():
источник
HomeViewPagerAdapter
?Вы можете проверить мою библиотеку для обработки вашего запроса: https://github.com/tommybuonomo/dotsindicator
В вашем макете XML
В вашем коде Java
источник
tools:replace="android:label"
кapplication
тегу в my,AndroidManifest.xml
чтобы избавиться от ошибки, связанной с тем, что этот тег был определен дважды и вызвал сбой сборки gradle.gradle
ошибку, хотяError:(39, 20) All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.0.0, 25.3.1. Examples include 'com.android.support:support-compat:27.0.0' and 'com.android.support:animated-vector-drawable:25.3.1'
- как я могу это исправить?selector_product_image.xml
image_selected.xml
image_unselected.xml
ImageAdapter.java
row_slider_image.xml
источник
Ваш xml
создать Drawable. щелкните правой кнопкой мыши на drawable -> new -> Drawable.
tab_selector.xml
Теперь есть еще два XML-файла. создать еще два XML-файла с уважаемым именем. это индикатор селектора и невыбранный индикатор
selected_tab.xml
unselected_tab.xml
источник
SmartViewPager
это ваш собственный вид.Когда вы хотите что-то похожее на это с последними ViewPager2 и Kotlin
Все самоочевидно, объяснять не нужно!
1. Ваша деятельность или фрагмент
2. Макет
3. Drawable: tab_selector.xml
4. Drawable: dot_selected.xml
5. Drawable: dot_default.xml
6. Адаптер
}
7. Макет: pager_item.xml
источник
Поместите ViewFlipper и viewFlipper_linear_dot_lay (Linearlayout) на одну и ту же базу и следуйте приведенному ниже
И OnRight & OnLeft получает размещенный ниже код
источник
Добавить зависимости> Синхронизировать Gradle
В вашем коде Java
В вашем макете
источник