Android: Detecção de Fling no ListView com linhas complexas
-
26-09-2019 - |
Pergunta
Caros hackers do Android, estou anexando um gesturelistener reconhecendo as flings a uma ListView. As linhas do ListView consistem em uma visão linear e algumas visitas de texto. Infelizmente, a aventura não é detectada, quando inicia em uma das visualizações de texto:
<?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>
Então, quando inicio o arremesso no LinearLayout horizontal, tudo funciona bem, mas quando o inicio na visão de texto na parte inferior, nada acontece. Ele contém texto editável, se esse pode ser o problema ... Como é dito, o ouvinte está anexado ao próprio ListView.
Eu ficaria feliz se alguém pudesse ajudar!
Jan Oliver
Solução
Sua visão de texto editável está retornando true
a partir de onTouch()
, impedindo que o evento seja processado pelo LinearLayout
mais alto a hierarquia de visualização.
Não há nada para impedir você de anexar um costume OnTouchListener
para o seu TextView
para substituir isso e passar o evento para o seu existente GestureDetector
.
textView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent ev) {
return gestureDetector.onTouchEvent(ev);
}
};