Элементы ListView не активируются с помощью функции HorizontalScrollView внутри - PullRequest
6 голосов
/ 07 июня 2010

У меня довольно сложный ListView.Каждый элемент выглядит примерно так:

> LinearLayout (vertical)
  > LinearLayout (horizontal)
    > include (horizontal LinearLayout with two TextViews)
    > include (ditto)
    > include (ditto)
  > TextView
  > HorizontalScrollView (this guy is my problem)
    > LinearLayout (horizontal)

В моей деятельности, когда создается элемент (вызывается getView()), я добавляю динамические TextView s к LinearLayout внутри HorizontalScrollView (кроме заполнения другой, более простой вещи).Удивительно, но производительность довольно хорошая.

Моя проблема в том, что когда я добавил HorizontalScrollView, мои элементы списка стали неактивными.Они не получают оранжевый фон при нажатии и не запускают настроенную мной OnItemClickedListener (для простого вызова Log.d).

Как я могу сделать элементы моего списка снова активируемыми?


Редактировать: Настройка android:descendantFocusability="blocksDescendants" на верхнем LinearLayout, кажется, работает.Хотелось бы узнать, есть ли другие способы: что делать, если я хочу сфокусировать элементы в списке?

Ответы [ 3 ]

8 голосов
/ 13 августа 2010

Используя android:descendantFocusability="blocksDescendants" на самом верхнем LinearLayout, добились цели. Элементы внутри по-прежнему могут быть «кликабельными», они просто не могут быть сфокусированы (т.е. вы не можете щелкать их на устройстве без сенсорного экрана). Достаточно хорошо для меня.

0 голосов
/ 09 октября 2013
android:descendantFocusability="blocksDescendants"

не помогло мне. Так

Итак, я понял, слушатель Патерн.

public interface EventListItemOnClickListener {
    public void itemClicked();
} 

А в адаптере уведомить всех слушателей

private List<EventListItemOnClickListener> listeners;
protected void notifyOnClick(int position){
  for(int i=0; i<listeners.size();++i)
    listeners.get(i).itemClicked((Event)events.get(position));
}
...
    @Override
    public void onClick(View v) {
      notifyOnClick(position);
    }
...
0 голосов
/ 23 июля 2013

, когда я применил HorizontalScrollView к моему TableLayout, прокрутка работает нормально, но не может нажать на элемент списка Мой макет как follwos

LinearLayout HorizontalScrollView TableLayout ......... / TableLayout / HorizontalScrollView / LinearLayout

я применил android: downndantFocusability = "blocksDescendants" к моей самой линейной линейке в любой справке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...