OnClickListener von Child verhindert den Swipe von Android ViewPager

Ich benutze einen ViewPager mit dynamischen Ansichten wie in diesem Link gezeigt . Ich füge jede Seite zum Viewpager hinzu. Der Code, um jede Seite zu erstellen und sie dem Pager-Adapter hinzuzufügen, ist wie folgt

public View createPage( ) { TableLayout table = new TableLayout(mycontext); TableRow row = new TableRow(mycontext); for(int i=0; i <= num_of_views; i++) { TableLayout catTable = new TableLayout(mycontext); TableLayout.LayoutParams params = new TableLayout.LayoutParams(); params.height = LayoutParams.MATCH_PARENT; TableRow catName = new TableRow(mycontext); catName.setGravity(0x03); catName.setLayoutParams(params); TextView cat = new TextView(mycontext); TableRow.LayoutParams RowParams= new TableRow.LayoutParams(pixeltoDp(0),pixeltoDp(85)); RowParams.weight = 1; cat.setLayoutParams(RowParams); cat.setPadding(35, 0, 5, 0); cat.setGravity(0x13); cat.setSingleLine(true); cat.setHorizontallyScrolling(true); cat.setFocusable(true); cat.setFocusableInTouchMode(true); cat.setLines(1); cat.setText(data.getCats().get(i).getName()); cat.setTextColor(color); cat.setSelected(true); catName.addView(cat); catTable.addView(catName); for(int j=0; j < 5; j++) { TableRow trChild = new TableRow(mycontext); trChild.setLayoutParams(params); trChild.setGravity(0x11); for (int k=0; k<4; k++) { TextView app = new TextView(mycontext); TableRow.LayoutParams tableRowParams= new TableRow.LayoutParams(pixeltoDp(0),pixeltoDp(80)); margin = pixeltoDp(11); tableRowParams.weight = 1; app.setLayoutParams(tableRowParams); app.setGravity(0x11); app.setSingleLine(true); app.setTextSize(pixeltoDp(12)); app.setTextColor(Color.BLACK); app.setTypeface(verdana); int pos = j+(k*5); if((pos < mysize)) { Drawable icon = getMyDrawable(); app.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null); app.setText("some Name"); app.setTag(i+":"+pos); app.setEllipsize(TextUtils.TruncateAt.END); app.setOnClickListener(onMyClick); } trChild.addView(app); } catTable.addView(trChild); } TableRow.LayoutParams tableRowParams= new TableRow.LayoutParams (TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.WRAP_CONTENT); margin = pixeltoDp(5); tableRowParams.setMargins(margin,0,margin, pixeltoDp(18)); catTable.setLayoutParams(tableRowParams); } row.setGravity(0x03); table.addView(row); return table; } 

Der OnClickListener für die Textansicht auf der Seite ist wie folgt

  • StateListDrawable zum Umschalten von Farbfiltern
  • Mit der SlidingUpPanel-Bibliothek einen Blick auf den Boden stellen
  • Nehmen Sie ein Foto automatisch ohne Benutzerinteraktion auf
  • Unterschied zwischen Intent.ACTION_GET_CONTENT und Intent.ACTION_PICK
  • Qt QML Kamera zu C ++ QImage auf Android
  • Interface Builder (User Interface Designer) für Android
  •   private View.OnClickListener onAppClick=new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub String gettext = (String)v.getTag(); String[] splittext = gettext.split(":"); Log.d("TAG","Click Event is Triggered"); } }; 

    Das Problem, das ich mir vorgestellt habe, ist, dass der Viewpager gleitet, wenn ich auf dem Bildschirm wandere, aber wenn mein Finger startet den Swipe aus dem Text mit dem onclicklistener die Seite nicht gleiten, wird auch das Klickereignis nicht aufgerufen. Wenn ich auf die Textansicht klicke, wird das Klickereignis aufgerufen. Ich kann nicht feststellen, warum der Viewpager die Seiten nicht umklappt, wenn der Swipe aus der Textansicht mit Klickereignis beginnt.

    Um den Grund für den Bug herauszufinden, fügte ich dem Viewpager einen Onlineshop hinzu und stellte fest, dass das Touch-Event des Viewpagers aufgerufen wird, wenn das Swipe auf der Seite der Seite auftritt, wo es keine Textansicht gibt und das Touch-Event nicht aufgerufen wird Alles wenn das Swipe an der Textansicht beginnt. Wenn ich den onclicklistener der textansicht beseitige, dann dreht sich der gesamte viewpager ohne jegliche Ausgabe. Also das Problem ist, dass das Klickereignis der Textansicht die Berührungsereignisse des Viewpagers stoppt. Bitte sag mir, wenn ich etwas falsch mache in meinem Erstellen Seitencode. Die Ansicht, die ich in dieser Funktion anlege, wird dem Viewpager über den Seitenadapter hinzugefügt, wie in dem oben erwähnten Tutorial gezeigt.

  • Warnung: linker: app_process hat Textverlagerungen. Dies verschwendet Speicher und ist ein Sicherheitsrisiko. Bitte repariere. Berechtigungen verweigert
  • Android - IllegalStateException: Karte hat null Größe
  • Android, wie man Bild und Ort (mit Karte) im Gruppenchat mit xmpp-smack senden und empfangen kann
  • Firebase Crash produziert ANR beim Start
  • So installieren Sie die letzte Version des ADT Plug-Ins für Eclipse
  • Der Apk muss mit den gleichen Zertifikaten wie die vorherige Version signiert werden
  • 2 Solutions collect form web for “OnClickListener von Child verhindert den Swipe von Android ViewPager”

    Schließlich habe ich festgestellt, dass es einen Fehler in der neuesten Version von ViewPager gibt, bei dem ein TextView mit einem Klickereignis, singleLine als true und Gravity als Center gesetzt ist, nicht die Berührungsereignisse an den ViewPager übergibt, wenn der Finger am Anfang von verschoben wird Die Textansicht. Wenn wir die singleLine als falsch machen oder die Mittlergravitation entfernen, dann werden die Ereignisse an den ViewPager weitergegeben, dann kann es schwingen. Wir können nicht sowohl die Schwerelosigkeit als auch die Setsingleline (true) für die Textansicht oder einen Button mit sinlgeline Set als wahr verwenden. Ich habe das hier als Bug gemeldet

    Weitere Informationen finden Sie unter "Quelle der Einzeilen": https://github.com/android/platform_frameworks_base/blob/7bfb1e7f46d2ed3df6cc467bccec95b5999d9cc4/core/java/android/widget/TextView.java#L7877

    Es scheint, dass es etwas von einer Lösung gibt: Sie können setMaxLines(1) anstelle von setSingleLine() und es wird ohne Beeinträchtigung des Systems funktionieren. Allerdings kann ich Ihre vorherige Antwort bestätigen , in der du sagst, dass es ein Fehler ist

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.