私はループViewPager
を実装しようとしています。私は自分のページの最初と最後に2つのダミーページを追加しました。そして私はTabLayout
をページインジケータとして使用しています。そのため、最初と最後のタブを透明にして無効にする必要がありました。ViewPagerで設定するTabLayoutの最初と最後のタブの色を変更するにはどうすればよいですか?
<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" />
そして、これがTabLayout
のために描画可能なxmlです:: これはTabLayoutのための私の現在のXMLコードである
<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"/>
私はstate_firstとstate_lastを使用しようとしましたが、それが機能していません。
これは私のためのトリック方法ですが、私はルーピングViewPager
を実装するためにいくつかのチュートリアルを検索しました。彼らのほとんどはViewPager
のページがダイナミックで、4ページ未満しかないので私の場合には適していない少なくとも4ページが必要です。 助けてください。
これは私のアダプタクラスです:あなたはの線に沿って何かしたい
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);
}
}
pagerAdapterクラスのJavaコードを追加できますか?それが使用されている場所(アクティビティ、フラグメントなど)も表示されます。あなたはそれをプログラムで行う必要があるかもしれません – chornge