0

Ich habe einen PagerSlidingTabStrip mit Viewpager, der drei Fragmente enthält. Eines der Fragmente hat ListView. Wenn ich auf den ListView-Elementen nach links oder rechts wische, ändert der viewpager die Seiten nicht. Wenn ich über das ListView wische, funktioniert das Scrollen gut. Wenn ich auf die anderen Fragmente wische, die nur TextView enthalten, funktioniert der Swipe. Bitte schlagen Sie vor, was ich falsch machen könnte?PagerSlidingTabStrip ViewPager nicht scrollen

Dieses Problem kann reproduziert werden, indem einfach das folgende Fragment und der Adapter im Beispielcode des PagerSlidingTabStrip hinzugefügt werden.

@SuppressLint("ValidFragment") 
public class HomeFragment extends Fragment { 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = null; 
     try { 
      view = inflater.inflate(R.layout.home, container, false); 
      ListView listview = (ListView) view.findViewById(R.id.homegrid); 

      listview.setAdapter(new HomeAdapter(inflater)); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

     return view; 
    } 
} 

public class HomeAdapter extends BaseAdapter { 
    private Context mContext; 
    LayoutInflater inflater; 

    public HomeAdapter(LayoutInflater inflater) 
    { 
     this.inflater = inflater; 
    } 

    public int getCount() { 
     return 5; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { // if it's not recycled, initialize some attributes 
      convertView = inflater.inflate(R.layout.home_grid_item, parent, false); 
     } 
     TextView text1 = (TextView)convertView.findViewById(R.id.title); 
     text1.setText("FAVOURITE "+position); 

     return convertView; 
    } 


} 

home.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_horizontal|center_vertical" 
    android:gravity="center_horizontal|center_vertical" 
    android:orientation="vertical" 
    android:background="#ffe0e0e0" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingTop="20dp" 
    android:paddingBottom="20dp" 
    android:clipToPadding="false" 
    > 

    <ListView 
     android:id="@+id/homegrid" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal|center_vertical" 
     android:layout_gravity="center_horizontal|center_vertical" 
     > 
    </ListView> 

</LinearLayout> 

home_grid_item.xml

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_gravity="center_vertical" 
     android:gravity="center_horizontal|center_vertical" 
     android:background="#000000" 
     > 
    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical|center_horizontal" 
     android:paddingRight="0dp" 
     android:paddingLeft="0dp" 
     android:text="FAVOUR" 
     android:textSize="9pt" 
     android:textStyle="bold" 
     android:textAllCaps="true" 
     android:textColor="#FFFFFF" 
     android:singleLine="true" 
     android:maxLines="1" /> 
    </LinearLayout> 
+0

Es scheint, dass die 'ListView' das' onTouch' Ereignis außer Kraft setzt. Code der Listenansicht hinzufügen plz –

+0

Wenn Sie den 'PagerSlidingTabStrip' nicht hinzufügen, was wird dann passieren? Ein 'ListView' sollte sowohl mit' ViewPager' als auch mit dem 'PagerSlidingTabStrip' perfekt funktionieren, also wird etwas durcheinander gebracht. Sie haben den Beispielcode von Google nicht geändert oder verbessert? Auch dein 'Fragment' ist fehlerhaft - es hat wahrscheinlich nichts mit diesem Problem zu tun, aber du solltest immer einen öffentlichen Konstruktor für das 'Fragment' haben. – Darwind

+0

Und noch etwas ... der 'PagerSlidingTabStrip' ist keine Standard-Android-Komponente - es ist eine 3rd-Party-Bibliothek - warum versuchst du es nicht mit dem' TabLayout' aus der Design-Bibliothek? Sehen Sie dieses Tutorial, wie es funktioniert: http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/ – Darwind

Antwort