2

プレスアイテムに二重の波及効果があります(アイテムの中心からの波及効果と、触れたポイントからの秒)。ここに私の問題のスクリーンショットがあります:

ここに画像の説明を入力

ただし、これは最初のアイテムでのみ発生し、他のアイテムでは波及効果がうまく機能します。私はこのudacity プロジェクトに従っていますが、同じ問題があることに気付きました。

私が使用しているリソースは次のとおりです。

drawable-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>

行項目.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

4

3 に答える 3

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ファイルの446行にあります。だからあなたはそれに対処したいかもしれません。

他にご不明な点がございましたら、お気軽にお問い合わせください。

于 2015-06-25T15:40:07.547 に答える
0

backgroundリストアイテムにを設定する代わりlistSelectorに、リストビュー自体に を設定するかstate_pressed、アイテムの背景セレクターにを含めない場合、二重のリップルを回避できると思います。

于 2018-08-11T20:42:40.067 に答える