#android #listview #customization
#Android #просмотр списка #настройка
Вопрос:
Я много пытался заставить все работать, но без какого-либо успеха.
Я внедрил пользовательский listview, который отображает 3 textviews, добавил пользовательский адаптер моих рук, и все работает правильно, я выполнил registerForContextMenu (просмотр listview), и когда я нажимаю отображаемые элементы, он показывает идеальную синюю подсветку вокруг моего элемента, и когда я нажимаю его долго, происходит то же самое изатем он показывает мне меню. Хорошо. Затем я добавил кнопку внутри моего пользовательского listview, отображающую один цвет, если происходят определенные вещи, отображая другой наоборот. После того, как я изменил свой пользовательский адаптер, включив в него свою кнопку и установив логику изменения цвета, если я долго нажимаю на свои элементы, у меня больше нет подсветки, но контекстное меню сохраняется.
Почему это происходит?
Я много искал в Stack и Google, но каждое найденное мной решение не работало с моим приложением. Я также попытался вставить пользовательский селектор, он отлично работает, когда я исключаю кнопку из своего дизайна listview, я полагаю, что кнопка является виновником, но я не могу найти способ решить эту проблему. Я полагаю, это что-то связанное с «фоном» — «возможностью рисования» кнопки, но я здесь, чтобы попросить вас о помощи.
Заранее спасибо.
Некоторый код, если он может вас заинтересовать:
listviewdesign.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="@ id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"
android:layout_centerVertical="true"
android:gravity="center"
/>
<TextView
android:id="@ id/text2"
android:singleLine="false"
android:maxEms="8"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_toLeftOf="@ id/text3"
android:layout_toRightOf="@ id/text1"
android:layout_centerVertical="true"
android:gravity="center"
/>
<TextView
android:id="@ id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@ id/btn1"
/>
<Button
android:id="@ id/btn1"
android:layout_width="10px"
android:layout_height="10px"
android:layout_alignParentRight="true"
android:layout_marginTop="20dp"
/>
</RelativeLayout>
mainactivitylayout.xml:
<LinearLayout ...>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@android:id/list"
(when I add selector: android:listSelector="@xml/myselector")
android:clickable="false"
/>
</LinearLayout>
И мой селектор для полноты:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
class="class of project">
<item android:state_pressed="true"
android:drawable="@drawable/pressed"/>
<item android:state_focused="true"
android:drawable="@drawable/focused"/>
<item android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/normal"/>
<item android:drawable="@drawable/normal"/>
</selector>
Где эти элементы для рисования правильно настроены, например:
<resources>
<drawable name="pressed">#FF00A5FF</drawable>
<drawable name="focused">#FF0000FF</drawable>
<drawable name="normal">#00000000</drawable>
</resources>
Спасибо!
Ответ №1:
Вам нужно разместить «myselector.xml » в папке для рисования.
android:listSelector="@xml/myselector"
эта строка должна быть
android:listSelector="@drawable/myselector"
Комментарии:
1. Я пытался, но это не сработало… Почему папка для рисования не подходит для хранения моего пользовательского селектора?
2. вы должны поместить свой myselector.xml в вашей папке для рисования. затем используйте приведенный выше код, тогда он будет работать.
3. Я пытался, но это не работает… Я думаю, что есть модификация интерактивной области: только в определенных точках она выделяет весь элемент, но если я нажимаю «случайно» в строке, она не работает (за исключением некоторых моментов: я специально заметил на пограничной строке между одним элементом и другим)
4. он также работает с myselector.xml файл внутри моей папки xml, это не проблема для моего проекта. Если я исключу кнопки из представления, он будет хорошо работать со всеми текстовыми представлениями, сколько угодно, это не имеет значения. Но если я вставлю одну кнопку, все элементы управления представлением будут изменены, и они больше не будут выделяться. Я думаю, что проблема находится внутри свойства view кнопки, но я не знаю, какой из них вызывает проблему. Есть предложения?
5. измените свои селекторы для рисования на селекторы цветов. Вы используете ресурсы цвета в качестве ресурсов для рисования.