2016-10-13 2 views
0

Я много пробовал, чтобы все работало, но без какого-либо успеха.Android - пользовательский список и выделение

Я внедрил пользовательское listview, которое отображает 3 текстовых просмотров, добавляет пользовательский адаптер моих рук и все работает правильно, я сделал registerForContextMenu (просмотр списка), и когда я нажимаю отображаемые элементы, он показывает идеальный синий выделите вокруг моего элемента, и когда я нажимаю его долго, это происходит, а затем показывает мне меню. Хорошо. Затем я добавил кнопку внутри своего пользовательского списка, отображая один цвет, если происходят определенные вещи, отображая еще одну обратную сторону. После того, как я изменил свой пользовательский адаптер, включив свою кнопку и установив логику изменения цвета, если я долгое время нажимаю на мои элементы, у меня больше нет подсветки, но контекстное меню сохраняется.

Почему это происходит?

Я много искал в Stack и Google, но каждое найденное мной решение не работало с моим приложением. Я также попытался вставить настраиваемый селектор, он отлично работает, когда я исключаю кнопку из моего дизайна списка, я полагаю, что кнопка является виновником, но я не могу найти способ решить эту проблему. Я полагаю, что что-то связано с «фоном» - «растягиваемым» кнопки, но я здесь, чтобы попросить вас о помощи.

Заранее спасибо.

Некоторые код, если это может вас заинтересовать:

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> 

Где t подходящие для шланга элементы, такие как:

<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" 
+0

Я пытался, но не получилось ... Почему вытяжке папка не правильно хранить свой собственный селектор? – pippo

+0

, вы должны поместить свой myselector.xml в свою папку. то используйте выше код, тогда он будет работать. –

+0

Я пробовал, но он не работает ... Я думаю, что есть модификация области, на которую можно щелкнуть: только в определенных точках она выделяет весь элемент, но если я нажимаю «случайно» в строке, он не работает (кроме в некоторых случаях: я заметил специально на границе между одним элементом и другим) – pippo

Смежные вопросы