У меня есть пейджер с видом, заполненный тремя фрагментами, и вкладки представлены в виде точек. Я создал селектор с различными чертежами для выбранного или стандартного состояния, и он работает нормально. Однако для каждого выбранного фрагмента соответствующий индикатор точки должен иметь другой цвет. Для этого я реализовал следующие, но изменения цвета, установленные на tabSelectedListener, не имеют эффекта, цвета остаются теми, что указаны в файле dot_selector.Как сделать каждый выбранный индикатор точки разного цвета
PagerAdapter pagerAdapterWelcome = new PagerAdapter(getSupportFragmentManager(), listFragments);
viewPager.setAdapter(pagerAdapterWelcome);
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tabDots);
tabLayout.setupWithViewPager(viewPager, true);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch (tab.getPosition()) {
case 0:
tabLayout.setSelectedTabIndicatorColor(getResources().getColor(android.R.color.white));
break;
case 1:
tabLayout.setSelectedTabIndicatorColor(getResources().getColor(android.R.color.black));
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tabLayout.setSelectedTabIndicatorColor(getResources().getColor(android.R.color.darker_gray));
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
switch (tab.getPosition()) {
case 0:
tabLayout.setSelectedTabIndicatorColor(getResources().getColor(android.R.color.white));
break;
case 1:
tabLayout.setSelectedTabIndicatorColor(getResources().getColor(android.R.color.black));
break;
}
}
}
Компоновка:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabDots"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabBackground="@drawable/dot_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"/>
</RelativeLayout>
dot_selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/dot_indicator_selected"
android:state_selected="true"/>
<item android:drawable="@drawable/dot_indicator_default"/>
</selector>
dot_indicator_selected:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="4dp"
android:useLevel="false">
<solid android:color="@android:color/black"/>
</shape>
</item>
</layer-list>
dot_indicator_default:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="4dp"
android:useLevel="false">
<solid android:color="@android:color/darker_gray"/>
</shape>
</item>
</layer-list>
Оригинальный источник из [здесь] (http://www.androidhive.info/2016/05/android-build-intro-slider-app/) – Piyush
Да, но я изменил его, чтобы использовать его в моих просмотрщиках @Piyush – Dudupoo