Android: schleudern Erkennung auf Listview mit komplexen Reihen
-
26-09-2019 - |
Frage
Liebe Android Hacker, Ich füge einen gestureListener flings zu einem Listview zu erkennen. Die Reihen des Listview bestehen aus einem LinearView und einigen Textviews. Leider ist das fling nicht erkannt wird, wenn es auf einem der Textviews beginnt:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#000000" >
<TextView
android:id="@+id/author"
android:textSize="14sp"
android:textColor="#ffffff"
android:textStyle="bold"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/date"
android:textSize="11sp"
android:textColor="#eeeeee"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"/>
</LinearLayout>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingRight="5dp"
android:paddingLeft="5dp"
android:textColor="#333333"
android:paddingBottom="5dp"
android:textSize="14sp"
android:layout_weight="2"/>
</LinearLayout>
Also, wenn ich das fling auf dem horizontalen Linearlayout beginnen, alles funktioniert gut, aber wenn ich es auf dem Textview am Boden beginnen, passiert nichts. Es containts editierbaren Text, wenn das das Problem sein könnte ... Wie gesagt, wird der Zuhörer an die Listview selbst angebracht.
Ich würde mich freuen, wenn jemand helfen könnte!
Jan Oliver
Lösung
Ihre editierbare Textview ist true
von onTouch()
Rückkehr von der Veranstaltung nicht mehr durch die LinearLayout
verarbeitet werden weiter oben in der Ansichtshierarchie.
Es gibt nichts hindern Sie eine benutzerdefinierte OnTouchListener
zu Ihrem TextView
Anbringen dieses außer Kraft zu setzen und um das Ereignis zu Ihrem bestehenden GestureDetector
passieren.
textView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent ev) {
return gestureDetector.onTouchEvent(ev);
}
};