Получение событий изменения фокуса для динамического TableRow

#android #tablelayout #tablerow #focusable

#Android #tablelayout #tablerow #фокусируемый

Вопрос:

У меня есть TableLayout, который можно фокусировать. Я динамически добавляю в TableRows к этому TableLayout.

Хотя я могу заставить TableRow и его содержимое (несколько текстовых представлений) реагировать на события касания, я не могу заставить ни одно из них реагировать на события фокусировки.

Помимо настройки OnFocusChangeListener, есть ли что-нибудь еще, что мне нужно сделать?

 TableRow tableRow = new TableRow(this); // "this" is a valid Context...
tableRow.setFocusableInTouchMode(true);
tableLayout.addView(tableRow);

TextView someNameTextView = new TextView(this);
someNameTextView.setText("Foo");
someNameTextView.setFocusableInTouchMode(true);
tableRow.addView(someNameTextView);

tableRow.setOnFocusChangeListener(someRowFocusChangeListener);
someNameTextView.setOnFocusChangeListener(someRowFocusChangeListener);
  

Ответ №1:

Вы на самом деле вызываете setFocusable (см. http://developer.android.com/reference/android/view/View.html#setFocusable(boolean) ) на View s и TableRow s?

Комментарии:

1. Феми, я сделал. Просто чтобы проверить ситуацию, я изменил экземпляры TextView на экземпляры EditText, и фокус работал просто отлично. Я думаю, может быть, мне нужно отойти от TableLayout и придерживаться ListViews.

Ответ №2:

Я использовал не тот компонент для взаимодействия с пользовательским интерфейсом, который я искал.