У меня есть следующий файл layout.xml. e_btn_fretboard вообще не регистрирует щелчки. Даже когда я нажимаю на нее, она не меняется на цвет нажатого состояния. Все остальные кнопки работают. Я переместил кнопку в другую ячейку сетки и оставил ее пустой. И вот что: когда я переместил кнопку, она теперь регистрирует нажатие и меняет цвет на нажатое состояние.
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<ImageView
android:id = "@+id/board_img"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintHorizontal_bias = "0.0"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toTopOf = "parent"
app:srcCompat = "@drawable/fretboard_12" />
<ImageView
android:id = "@+id/fretmarker"
android:layout_width = "14dp"
android:layout_height = "14dp"
android:src = "@drawable/fretmarker" />
<ScrollView
android:layout_width = "0dp"
android:layout_height = "0dp"
android:layout_marginEnd = "8dp"
android:layout_marginStart = "8dp"
android:layout_marginTop = "30dp"
android:clipToPadding = "false"
android:fillViewport = "false"
android:scrollbars = "vertical"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/board_img"
app:layout_constraintVertical_bias = "0.0">
<LinearLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:orientation = "vertical">
<GridLayout
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:layout_marginBottom = "8dp"
android:layout_marginEnd = "8dp"
android:layout_marginStart = "8dp"
android:layout_marginTop = "8dp"
android:columnCount = "3"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/noteImage"
>
<Button
android:id = "@+id/c_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_columnWeight = "1"
android:layout_column = "0"
android:layout_row = "0"
android:text = "C"
/>
<Button
android:id = "@+id/csharp_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "1"
android:layout_columnWeight = "1"
android:layout_row = "0"
android:text = "C#/Db"
android:textAllCaps = "false"
/>
<Button
android:id = "@+id/d_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "2"
android:layout_columnWeight = "1"
android:layout_row = "0"
android:text = "D"
/>
<Button
android:id = "@+id/dsharp_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "0"
android:layout_columnWeight = "1"
android:layout_row = "1"
android:text = "D#/Eb"
android:textAllCaps = "false" />
<Button
android:id = "@+id/e_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "1"
android:layout_columnWeight = "1"
android:layout_row = "1"
android:text = "E" />
<Button
android:id = "@+id/f_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "2"
android:layout_columnWeight = "1"
android:layout_row = "1"
android:text = "F" />
<Button
android:id = "@+id/fsharp_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "0"
android:layout_columnWeight = "1"
android:layout_row = "2"
android:text = "F#/Gb"
android:textAllCaps = "false" />
<Button
android:id = "@+id/g_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "1"
android:layout_columnWeight = "1"
android:layout_row = "2"
android:text = "G" />
<Button
android:id = "@+id/gsharp_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "2"
android:layout_columnWeight = "1"
android:layout_row = "2"
android:text = "G#/Ab"
android:textAllCaps = "false" />
<Button
android:id = "@+id/a_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "0"
android:layout_columnWeight = "1"
android:layout_row = "3"
android:text = "A"
android:textAllCaps = "false" />
<Button
android:id = "@+id/asharp_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "1"
android:layout_columnWeight = "1"
android:layout_row = "3"
android:text = "A#/Bb"
android:textAllCaps = "false"/>
<Button
android:id = "@+id/b_btn_fretboard"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_column = "2"
android:layout_columnWeight = "1"
android:layout_row = "3"
android:text = "B" />
</GridLayout>
</LinearLayout>
</ScrollView>
</android.support.constraint.ConstraintLayout>
</RelativeLayout>
ваш макет необходимо переработать для оптимизации, для вашей проблемы я думаю, что ImageView с id @ + id / fretmarker является источником проблемы, он может перекрывать кнопку или потреблять щелчок ... вам нужно добавить его противопоказания
@AndreiVinogradov Удаление относительного макета исправило это. Если вы добавите свой комментарий в качестве ответа, я приму его как правильный.
@AnisBENNSIR Это изображение перемещается программно, поэтому ограничения не требуются.
ушли ли ваши изображения? Я думаю, что вы устанавливаете изображение как невидимое ... Не могли бы вы подтвердить, что вы используете пропавшее?
добавьте android:descendantFocusability = "afterDescendants" в макет сетки, и это, вероятно, сработает. что-то «ворует» ваше событие клика.
Сначала попробуйте упростить свой макет. Внутри ScrollView нет обязательных контейнеров, таких как основной RelativeLayout и LinearLayout. Упрощение этого вопроса улучшит производительность, читаемость и может снизить вероятность ошибки.
Почему вы используете в макете контейнеры только с одним дочерним элементом? Родительский относительный макет можно удалить - он ничего не делает. LinearLayout внутри ScrollView - тоже.