Завершите "кнопку" (LinearLayout с дочерними представлениями) с фоном, который можно нарисовать - при нажатии на детей не отображается "state_pressed"
У меня есть LinearLayout, у которого есть 2 дочерних элемента: ImageView выровнен влево и TextView выровнен вправо.
Я установил фон LinearLayout как XML-ресурс @drawable, который имеет два <item>
теги. У одного из них есть android:state_pressed="true"
, Кроме того, LinearLayout имеет android:clickable="true"
,
При щелчке LinearLayout он корректно меняет свой фон на android:state_pressed
стиль, но нажатие на одного из его дочерних элементов не распространяет действие щелчка до LinearLayout.
Есть ли способ легко достичь состояния щелчка в родительском представлении при щелчке по дочернему представлению?
3 ответа
Не уверен, что это работает для вашей конкретной реализации, но очень простой способ достижения этой "сложной" кнопки - сделать обычную кнопку и использовать android:drawableLeft
или же android:drawableRight
или же android:drawableTop
или же android:drawableBottom
а также android:drawablePaddig
добиться того же визуального результата в одном виде.
например:
<LinearLayout orientation=vertical>
<ImageView/>
<TextView/>
</LinearLayout>
почти так же, как
<Button
drawableLeft="@drawable/..."
text="..."
/>
Таким образом, весь макет становится проще, а нажатые состояния работают "из коробки".
Не используйте оба, поскольку это даст исключение
Используйте это для ваших родителей
android:addStatesFromChildren="true"
Или добавьте в ваши детские взгляды
`android:duplicateParentState="true"`
Надеюсь, поможет
Рассмотрите возможность использования одного TextView
и используя android:drawableLeft
или же android:drawableRight
атрибут, чтобы показать ваше изображение. Это лучший дизайн и более производительный, чем LinearLayout
с двумя детьми
Если это не сработает, попробуйте добавить android:addStatesFromChildren="true"
к LinearLayout
,