Android: Обнаружение броска на ListView со сложными строками
-
26-09-2019 - |
Вопрос
Уважаемые хакеры Android, я прикрепляю гестоурелистинер, распознавающую литье к ListView. Ряды ListView состоят из линеариста и некоторых текстовых просмотров. К сожалению, флинг не обнаружен, когда он начинается на одном из текстовых просмотров:
<?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>
Итак, когда я начинаю бросать на горизонтальную линеарию, все работает нормально, но когда я начну его на текстовом представлении внизу, ничего не происходит. Это произошло с редактируемым текстом, если это может быть проблемой ... Как говорят, слушатель прикреплен к самому списку.
Я был бы рад, если кто-то может помочь!
Ян Оливера
Решение
Ваш редактируемый TextView возвращается true
от onTouch()
, предотвращение обработки мероприятия LinearLayout
выше, иерархия просмотра.
Там ничего не останавливается, чтобы вы прикрепили заказ OnTouchListener
на ваш TextView
Чтобы переопределить это и пройти событие к существующему GestureDetector
.
textView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent ev) {
return gestureDetector.onTouchEvent(ev);
}
};