Ich versuche ein horizontales Karussell zu implementieren, wo es maximal 3 Objekte auf dem Bildschirm gibt und das mittlere Objekt eine andere Ansicht hat.Skalieren Sie die Mitte auf ein Objekt in einem ViewPager
Ich erreichte es mit dem ViewPager durch Überschreiben der getPageWidth() Callback, aber Schwierigkeiten bei der Suche nach dem mittleren Element.
Jede Hilfe oder Anregung wäre hilfreich.
private class ViewPagerAdapter extends FragmentStatePagerAdapter {
public int LOOPS_COUNT = 1000;
private String[] str = {
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"DD"
};
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
position = position % str.length;
return ViewPagerCustomFragment.instance(str[position]);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
}
@Override
public int getCount() {
return str.length * LOOPS_COUNT; // simulate infinite by big number of products
}
@Override
public float getPageWidth(int position) {
float f = 1.0f/3;
return (f);
}
}
Das ist mein Fragment-Layout ist ...
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/abc"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerHorizontal="true"
android:layout_above="@+id/lin"
android:text="aaaaaaa"/>
<LinearLayout
android:id="@+id/lin"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content">
<View
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_gravity="center"
android:layout_weight="1"
android:background="#000000" />
<ImageView
android:id="@+id/imageview"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:src="@drawable/circle" />
<ImageView
android:id="@+id/imageview1"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:visibility="gone"
android:src="@drawable/circle"
android:tint="#000000"/>
<View
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_gravity="center"
android:layout_weight="1"
android:background="#000000" />
</LinearLayout>
</RelativeLayout>
Nein, nicht unbedingt, so dass im Grunde die viewpager Breite durch 3 geteilt wird und wenn ich scrollen es das erste Element nach links bewegen und bringt die richtigen dh 4. auf Position 2. Diese Lösung wird in dieser Arbeit nicht Fall. – Ritesh
dann können Sie einfach die Mitte auf 1 initialisieren (int mid = 1, die anfängliche mittlere Position) und dann nach jedem Streichen nur 1 hinzufügen und die Ansicht ändern. –
Was Sie auch versuchen, ist die mittlere Ansicht in eine andere Ansicht als die 2 Ansichten auf seinen beiden Seiten zu ändern, nicht wahr? –