2

Я имею двойной эффект ряби на пресс-элемента (волновой эффект от центра пункта и второй с точки прикоснулся), вот скриншот моей проблемы:Android Почему у меня эффект двойной пульсации на фоне селектора?

enter image description here

Но это только происходят по первому элементу, в других эффект пульсации работает хорошо. Я следую за этим udacity project, и я понял, что у них такая же проблема.

Вот мои ресурсы, которые я использую:

вытяжке-v21/touch_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <ripple android:color="@color/grey" /> 
    </item> 

    <item android:drawable="@color/light_blue" android:state_activated="true" /> 

    <item android:drawable="@android:color/transparent" /> 
</selector> 

row_item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/touch_selector" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:orientation="horizontal"> 
    ... 
</LinearLayout> 

fragment_main.xml

... 
<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:divider="@null" 
    tools:listitem="@layout/row_item" /> 
... 

Как я могу это исправить эффект двойной пульсации на предмет нажатой? (Опять же, это происходит только в первом пункте, остальные работают хорошо).

Вот исходный код:https://github.com/epool/SpotifyStreamer/tree/stage-2

+0

Ошибка должна быть где-то еще в вашем коде. Кроме того, требуется более подробная информация. Например, это первый элемент в списке или первый нажатый. Вы регистрируете два фрагмента или Recyclerviews, которые перекрываются? – easycheese

+0

@easycheese да, это первый элемент в списке, а не первый нажатый.Действие состоит из двух фрагментов, левый фрагмент - это список, а правый фрагмент - другой список с той же проблемой. Я сейчас не на своем ноутбуке, но если это необходимо, я мог бы добавить больше кода, код очень похож на ссылку udacity github. – epool

+0

Вот исходный код: https://github.com/epool/SpotifyStreamer/tree/stage-2 – epool

ответ

0

@epool,

Я скачал ваш проект и запустил его. Проблема возникла не только по первому элементу списка, но и по другим. Я заметил, что это было непоследовательно, но это не случалось каждый раз.

Кажется, что вы, возможно, задали эффект пульсации или, по крайней мере, включили ее, в другом месте.

Если вы просто удалите строку кода ниже, она должна работать нормально! =]

<item android:state_pressed="true"> 
    <ripple android:color="@color/grey" /> 
</item> 

Только на стороне записки, я нажал несколько раз на различных элементов списка, чтобы увидеть, как они будут вести себя, и, делая это, я получил следующее сообщение об ошибке:

java.lang.ArrayIndexOutOfBoundsException: src.length=2048 srcPos=2048 dst.length=2048 dstPos=0 length=2047

Это на вашем Binder.java файл, в строке . Поэтому вы можете обратиться к этому.

Если у вас есть другие вопросы, пожалуйста, дайте мне знать.

+0

Я удалил элемент рябь, который работает, но текущий элемент, выбранный (синий) больше не имеет пульсации эффект при нажатии. – epool

+0

Странно. Когда я запускаю ваш проект, я не вижу ничего голубого ... Я изменил «android: state_activated» на «android: state_selected», чтобы проверить, и я увидел синий элемент после того, как искал художника. Даже на этом предмете это работало для меня. – Felipe

+0

Я не уверен, какое устройство вы используете, но теоретически строка должна быть синей на планшетах с sw-600dp. – epool

0

я имел также с той же проблемой, и после охоты на него в течение нескольких часов, я понял, что волновой эффект срабатывает в два раза, потому что я поставил v.setEnabled(false) то v.setEnabled(true) внутри onClickListener отключить вид в то время как OnClick продолжается.

Извлечение их решило проблему для меня.