2

アプリの Viewpager で EdgeEffect をカスタマイズしようとしています。目的は、青い ics Overscroll EdgeEffect をカスタムの赤いものに置き換えることでした。最初に、 overscroll_edgeと対応する overscroll_glow を編集しました。次に、両方をアプリの /res/drawable ディレクトリに配置します。さらに、EdgeEffect ソース ファイルをアプリの /src/android/widget/ ディレクトリにコピーしました。EdgeEffect で行った唯一の変更は、com.android.internal.R の代わりに com.my.application.R をインポートすることでした。

しかし、Android は、Android システムのカスタム android.widget.EdgeEffect の代わりにカスタム android.widget.EdgeEffect を使用しないため、Viewpager EdgeEffect は常に青色のままです。何か不足していますか?

4

3 に答える 3

2

、、、、およびを独自のアプリのパッケージ (com.yourapp.viewpager など)ViewPagerに実装する必要があります。行われた変更は、インポートとパッケージ名の調整のみでした。リソースファイルをアプリにコピーして編集すれば、うまくいきます。PagerAdapterFragmentstatePagerAdapterEdgeEffectCompatEdgeEffectCompatIcsEdgeEffectres/drawable

于 2013-02-19T22:51:41.127 に答える
1

非常に簡単な方法を提案できますが、ハックです:

int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);

グロー効果が実際には共有の Drawable であるという事実を利用して、フィルターを適用しました: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/

于 2013-12-09T19:16:20.087 に答える