Android: scagliare il rilevamento sul ListView con le righe complessi
-
26-09-2019 - |
Domanda
hacker Caro Android, vi allego una gestureListener riconoscere scaglia ad un ListView. Le righe della ListView costituiti da un LinearView e alcuni TextViews. Purtroppo, la scappatella non viene rilevato, quando comincia su uno dei TextViews:
<?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>
Così, quando inizio la scappatella sul LinearLayout orizzontale, tutto funziona bene, ma quando comincio sul TextView in fondo, non succede nulla. Si containts testo modificabile, se quello potesse essere il problema ... Come si dice, l'ascoltatore è attaccato al ListView stesso.
Sarei felice se qualcuno potrebbe aiutare!
Jan Oliver
Soluzione
Il TextView modificabile sta tornando true
da onTouch()
, impedendo l'evento venga elaborato dal LinearLayout
più in alto nella gerarchia della vista.
Non c'è niente di arresto si allegando un OnTouchListener
personalizzato al TextView
di ignorare questo e passare l'evento al GestureDetector
esistente.
textView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent ev) {
return gestureDetector.onTouchEvent(ev);
}
};