Галерея / AdapterView Детское состояние рисования

Я использую представление галереи, где представление, соответствующее каждому элементу, нетривиально и состоит из текста, а также нескольких кнопок.

Когда я щелкаю, чтобы перетащить вид галереи (где-то не на одну из кнопок), состояние рисования кнопки меняется на нажатие и выглядит так, как будто все кнопки нажимаются в данный момент. Кроме того, такое же поведение происходит для выбранного состояния (например, весь текст дочерних TextViews меняет цвет).

Я пытаюсь предотвратить такое поведение и обнаружил атрибут xml android: duplicateParentState, а также свойство setDuplicateParentStateEnabled. Кажется, что это должно выполнить то, что я пытаюсь сделать, но это, похоже, не имеет никакого эффекта.

Есть идеи?

Ответы на вопрос(2)

Решение Вопроса

Не уверен, где свойство duplicateParentState вступает в игру, но прорыв источника показывает, что он никогда не учитывается для выбранных и нажатых состояний. Я хотел бы создать собственный класс представления и переопределить методы dispatchSetSelected и dispatchSetPressed.

Возможно, немного запоздалая сторона, но недавно я сам столкнулся с этой проблемой и решил проблему.

dispatchSetSelected и dispatchSetPressed здесь не очень помогают, так как методы, которые вам действительно нужно переопределить, являются частными в Gallery.

Решение состоит в том, чтобы добавить дополнительный макет (я использовал подкласс LinearLayout) вокруг дочернего представления, который переопределяет setPressed (boolean) и просто игнорирует его. Это препятствует тому, чтобы галерея навязывала свое нажатое состояние дочерним элементам, в то же время позволяя тем самым дочерним элементам быть активированными непосредственно, и не мешая событиям распространяться вверх.

 Randy Sugianto 'Yuku'29 янв. 2011 г., 19:36
Это работает. Спасибо!
 MikeIsrael19 янв. 2012 г., 16:44
удивительное исправление! Кто-нибудь знает, если это сообщается об ошибке для Android? Кажется, не совсем ожидаемое поведение.

Ваш ответ на вопрос