Android: селектор не работает должным образом в выборе TableRow - PullRequest
0 голосов
/ 19 января 2012

У меня есть TAbleLayout в моем XML с 1 строкой, то есть строкой заголовков. Остальные все строки я добавляю динамически. Я хочу сделать ряд выбранным при нажатии на него и при прикосновении к нему. Я добавил clickListener в каждую строку и могу перехватить событие клика. Но когда мышь нажимают или удерживают нажатой, я вижу изменение цвета, затем снова приходит к нормальному цвету. Я хочу, чтобы цвет оставался измененным до тех пор, пока я не нажму на другую строку или на другое место, чтобы деактивировать выбранную строку.

Мой селектор XML-код:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!--  Active state -->  
<item android:state_selected="true" android:state_focused="false"
      android:state_pressed="false" android:drawable="@android:color/transparent" />      
<!--  Inactive state-->  
<item android:state_selected="false" android:state_focused="false"
      android:state_pressed="false" android:drawable="@android:color/transparent" /> 
 <!--  Pressed state --> 
 <item android:state_pressed="true" android:drawable="@color/yellow" />

<!--  Selected state (using d-pad) -->  
 <item android:state_focused="true" android:state_selected="true"
       android:state_pressed="false" android:drawable="@color/yellow" />

Мой код Java, где я генерирую строки динамически:

private void createView(TableRow tr, TextView tv, String data, int rowId) {
    tv.setText(data);

    tv.setTextColor(Color.WHITE);
    tv.setPadding(20, 0, 0, 0);

    tr.setPadding(0, 1, 0, 1);
    //tr.setBackgroundColor(Color.TRANSPARENT);
    tr.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tablerowselector));
    tr.setId(rowId);
    tr.setClickable(true);
    tr.setFocusable(true); // Added thinking that if its not focusable then it can't be selected, but makes no difference
    tr.setOnClickListener(this);
    tr.addView(tv);
}

Если я обработаю событие clickListener и установлю цвет фона строки на основе настройки логики prevRowSelected и currRowSelected, это сработает. Но как заставить селектор работать и почему он не работает? Не может ли селектор работать так, как я пытаюсь его достичь?

Спасибо

Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Друзья, селектор, не работает, как я ожидал. Так что обработали это программно, используя соответствующую логику и установив цвет строки.

Спасибо всем.

0 голосов
/ 19 января 2012

Как я понял, нужно сменить селектор. Я нашел рецепты здесь

...