web-dev-qa-db-ja.com

カスタムSwipeRefreshLayoutインジケーターを作成しますか?

SwipeRefreshLayoutのカスタムアニメーションで描画可能なオブジェクトを使用するカスタムインジケーターを作成するにはどうすればよいですか?

SwipeRefreshLayoutのソースコードを調べたところ、CircleImageViewオブジェクトがプライベートであることがわかりました。

とにかくImageViewを変更することはありますか?

12
AndyRoid

このアイデアがどれほど優れているかわからない場合は、リフレクションを介してドローアブルを変更できます。何かのようなもの :

mSwipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.your_swiperefresh_id);
try {
    Field f = mSwipeRefreshLayout.getClass().getDeclaredField("mCircleView");
    f.setAccessible(true);
    ImageView img = (ImageView)f.get(mSwipeRefreshLayout);
    img.setImageResource(R.drawable.your_drawable_file);
} catch (NoSuchFieldException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
}
26
abhishesh

https://github.com/liaohuqiu/Android-Ultra-Pull-To-Refresh を試してください。システムウィジェットの変更は面倒です。

3
tiny sunlight

上記の例のようにリフレクションを使用したくない場合は、インデックスが0のSwipeRefreshLayoutから子を取得できます。 CircleImageViewになるので、任意のDrawableを設定できます。