Android: создать кнопку с наложением, не активируемым кликом, когда вы фокусируете? - PullRequest
0 голосов
/ 09 декабря 2010

Для нового проекта Android мне нужны кнопки, которые «светятся» при фокусировке или нажатии, то есть увеличенное изображение должно отображаться поверх первого изображения. Моя проблема здесь в том, что кликабельная область должна быть не такой большой, как это наложенное изображение.

В ASCII-Art:

+------------------------------------------+
|                                          |
|                                          |
|         +---------------------+          |
|         | Inner image, always |          |
|         | visible & clickable |          |
|         +---------------------+          |
| Overlay (image with alpha on top)        |
| visible on focus or press, NOT clickable |
+------------------------------------------+

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

Знаете, как я могу решить эту проблему в Android? Лучшим решением будет XML-макет! Есть ли здесь лучшие практики?

1 Ответ

1 голос
/ 09 декабря 2010

Вы знаете, как я могу решить эту проблему в Android?

Вещи, находящиеся сверху с точки зрения оси Z, получают входные события. Следовательно, ваш выбор будет выглядеть так:

  1. Создайте непосредственный подкласс View, где вы все делаете сами, обходясь без ImageButton (или того, что вы используете сейчас).

  2. Попытка создать составной пользовательский View и делегировать соответствующие входные события нижележащим виджетам, что может или не может быть возможным.

  3. Найдите способ достижения приемлемого внешнего вида, который не подразумевает наличие чего-либо поверх кнопки.

Я предполагаю, что под "кнопкой" вы подразумеваете ImageButton, где вы заменили фон своим собственным StateListDrawable - иначе, ничто из того, что вы здесь написали, не имеет для меня большого смысла.

Если это так, вам не нужно наложение. Вы можете обойтись с ... мммм ... подложкой. Сделайте подложку (отдельную ImageView) видимой или невидимой в зависимости от состояния кнопки. Сделайте лицо и фон ImageView «сияющими» как часть вашего StateListDrawables.

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