2

ユーザがFABビューの外側に指を持ち上げると、自分のレイアウトのすべてで、私のFloatingActionButtonの波紋効果が持続します。すなわち、ユーザが白いFABを押し下げ、波紋が灰色に変わり、ユーザが指から指を離して持ち上げて持ち上げると、ボタンはグレーのままです。ここでFABビューバウンドの外で永続するリップル効果

はサンプルFAB XMLです:

<android.support.design.widget.FloatingActionButton 
      android:id="@+id/fab_pinfav" 
      android:layout_width="@dimen/fab_size" 
      android:layout_height="@dimen/fab_size" 
      android:src="@drawable/icon_unfavd" 
      app:elevation="8dp" 
      android:elevation="8dp" 
      android:layout_gravity="bottom|end" 
      android:layout_marginRight="@dimen/spacingMedium" 
      android:layout_marginEnd="@dimen/spacingMedium"/> 

そして、すべてのFabは、すなわち

のAndroid 5.1からAndroidの7.1に至るまで、さまざまなデバイス上でテストさ
<android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

、と、基本的なCoordinatorLayoutsを変えるの直接の子でありますそれぞれに同じ問題があります。

タッチ・エフェクトに反応するので、私の他のビューには何も出現しませんでした。

EDIT:関連するGoogleの問題https://code.google.com/p/android/issues/detail?id=218956( '問題#2' を参照)問題は中v23.4.0

存在デザインライブラリv25.0.0に存在していないFINAL EDIT:このバグはで修正されましたサポートライブラリ25.1.0のリリースhttps://developer.android.com/topic/libraries/support-library/revisions.html# この問題が発生した場合は、サポートライブラリのバージョンを25.1.0にアップデートしてください。

答えて

5

これは、Lollipopより前のバージョンでFloatingActionButtonのクリック可能な領域を修正するために修正されたものだと思います。この修正により、onTouchEvent()メソッドは、接触がコンテンツ領域外に発生した場合はfalseに戻ります。残念なことに、これはViewに配信されているそれ以上のタッチイベントを停止させる効果があるので、ACTION_UPを受け取ることは決してないため、それに応じてその押した状態を更新しません。

私たちは、自分自身をonTouchEvent()をオーバーライドし、FloatingActionButtonをサブクラスsuperコールからのリターンをチェックし、イベントがコンテンツ領域を残している場合、正しく押された状態を設定することにより、この修正プログラムを修正することができるはずです。

public class CustomFAB extends FloatingActionButton { 

    public CustomFAB(Context c, AttributeSet a) { 
     super(c, a); 
    } 

    // Additional constructors as needed 
    // ... 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     boolean result = super.onTouchEvent(ev); 
     if (!result) { 
      setPressed(false); 
     } 
     return result; 
    } 
} 
+0

これはうまくいきました。ありがとうございました。したがって、バグはサポートライブラリにあり、私のコードにはありません。あなたの解決策は、ロリポップ前サポートの問題を提起しますか?また、古いサポートライブラリバージョンを使用することに戻すより良い中間的な解決策ですか?乾杯。 – Demonsoul

+1

私はちょうど私がKitKatデバイスであり、このバージョンで期待どおりに動作するかどうかを今すぐ知ることができます。私は他のバージョンとの重大な問題は予見していませんが、もちろんどこでもテストしていません。確かに古いライブラリのバージョンに戻すことができますが、マージコメントがあいまいであるため、「クリック可能な領域」の問題が正確ではないので、実際にはあまり望ましくない動作になる可能性があります。私はまた、私が見つけることができる最も最近の情報源でもまだ問題を解決していないように見えるので、その暫定的な期間がどれくらいあるかも確信しています。乾杯! –

+1

GoogleのIssue Trackerに埋め込まれた関連する問題を掘り下げました:https://code.google.com/p/android/issues/detail?id=218956 誰かがv23.4.0で導入された問題を報告します。私はこのCustomFABソリューションを使用します。私はあなたのソリューションが、人々がそこに提案したものよりも優れていると信じています。ありがとう! – Demonsoul

関連する問題