Для справки в будущем у меня была похожая проблема, когда первый щелчок изменил бы цвет фокусируемого TextView из селектора, а второй щелкнул бы мою связанную функцию onClick, и я хотел, чтобы один щелчок обрабатывал оба.Использование глобального слушателя изменения фокуса решило эту проблему. Я использую поддержку совместимости v4 на Android 2.3 с фрагментами.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/yellow" />
<item android:state_pressed="false" android:state_focused="true" android:color="@color/darkgrey" />
<item android:state_pressed="false" android:color="@color/grey" />
</selector>
Layout.xml ...
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColorHint="@color/text_hint"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
android:textColor="@drawable/textviewSelector"
android:text="some text"/>
В моемЯва файл (фрагмент) У меня есть
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ViewTreeObserver VTO=getView().getViewTreeObserver();
VTO.addOnGlobalFocusChangeListener(new
ViewTreeObserver.OnGlobalFocusChangeListener() {
@Override
public void onGlobalFocusChanged(View oldFocus, View newFocus) {
switch(newFocus.getId()){
case R.id.tv1:
//On click Code
break;
}
}
});
}