Я обнаружил странное поведение на Android. Допустим, у меня есть представление списка, и каждая строка представляет собой линейный макет, содержащий текстовое представление. Я установил longClickListener в listView. Кроме того, я установил onTouchEvent в textView. Поведение, которое я хочу, заключается в том, что если пользователь нажмет textView в списке, должен быть запущен onTouchEvent. Если пользователь долго нажимает за пределами textView, он должен выполнять то, что определено в longClickListener. Однако в Android 4.2.1 такое поведение не работает. Я обнаружил, что Google изменил код, так что ChildView разделяет состояние нажатия с его родительским представлением в Jelly Bean. Это правильно? Если это так, как я могу реализовать то, что хочу?
Другими словами, я хочу, чтобы childView и parentView вели себя независимо!!
Любой ответ будет оценен!
Ниже мой CustomTextView.java
public class CustomTextView extends TextView {
public CustomTextView(Context context) {
super(context);
setPressed(false);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setPressed(false);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setPressed(false);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Intent.... something
Start a new activity... pretty straightforward
return super.onTouchEvent(event);
}
}
Ниже текстовое представление моего list_item.xml
<com.keek.widget.CustomTextView
android:id="@+id/caption"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/thumbnail_overlay"
android:lineSpacingExtra="1dp"
android:textColor="@android:color/black"
android:textSize="@dimen/text_11"
android:duplicateParentState="false"
android:longClickable="false"
android:textColorLink="@color/linkify_blue" />
Мой список довольно прост. Это обычный listView с onLongClickListener, который открывает диалоговое окно.
Дело в том, что когда я нажимаю textView, диалоговое окно и новое действие открываются одновременно. Что я хочу, так это то, что когда я нажимаю textView, он должен открывать новое действие, а не диалоговое окно.