Ich versuche, eine Schleife ViewPager
zu implementieren. Ich habe es getan, indem ich zwei Dummy-Seiten an der ersten und letzten Stelle meiner Seiten hinzugefügt habe. Und ich verwende TabLayout
damit als Seitenindikator, deshalb wollte ich den ersten und letzten Tab auf transparent und deaktiviert setzen. Dies ist mein aktueller XML-Code für TabLayout:Wie ändert man die Farbe für den ersten und letzten Tab in TabLayout mit ViewPager?
<android.support.design.widget.TabLayout
android:id="@+id/tabDots"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp" />
Und das ist die ziehbar xml für TabLayout
:
<item android:drawable="@drawable/tab_indicator_default"
android:state_selected="false"
android:state_focused="false"
android:state_pressed="false"/>
<item android:drawable="@drawable/tab_indicator_selected"
android:state_first="false"
android:state_last="false"
android:state_selected="true"/>
ich versucht habe state_first und state_last zu verwenden, aber es funktioniert nicht.
Dies ist eine Tricking-Methode für mich, aber ich habe einige Tutorials zu Looping ViewPager
zu implementieren gesucht. Die meisten von ihnen erfordern mindestens 4 Seiten, was in meinem Fall nicht geeignet ist, da die Seiten in ViewPager
dynamisch sind, weniger als 4 Seiten haben können. Bitte helfen.
Das ist mein Adapter-Klasse:
public class ShopPageAdapter extends PagerAdapter {
// This holds all the currently displayable views, in order from left to right.
private ArrayList<View> views = new ArrayList<View>();
@Override
public int getItemPosition(Object object) {
int index = views.indexOf(object);
if (index == -1)
return POSITION_NONE;
else
return index;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v = views.get(position);
if(v.getParent() != null)
((ViewGroup) v.getParent()).removeView(v);
container.addView(v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(views.get(position));
}
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public int addView(View v) {
return addView(v, views.size());
}
public int addView(View v, int position) {
views.add(position, v);
return position;
}
public int removeView(ViewPager pager, View v) {
return removeView(pager, views.indexOf(v));
}
public int removeView(ViewPager pager, int position) {
pager.setAdapter(null);
views.remove(position);
pager.setAdapter(this);
return position;
}
public View getView(int position) {
return views.get(position);
}
}
können Sie den Java-Code für Ihre PagerAdapter-Klasse hinzufügen? und auch wo es benutzt wird (Aktivität, Fragment, etc.). Sie müssen es möglicherweise programmgesteuert tun – chornge