Сделать пользовательский индикатор SwipeRefreshLayout?
Как я могу сделать пользовательский индикатор, который бы использовал объект с возможностью рисования с пользовательской анимацией для SwipeRefreshLayout
?
Я просмотрел исходный код для SwipeRefreshLayout
, и я заметил, что объект CircleImageView
был закрытым.
Есть ли способ изменить ImageView
?
Ответы
Ответ 1
Вы можете изменить выделение с помощью отражения, не уверен, насколько хороша эта идея. Что-то вроде:
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();
}
Ответ 2
Попробуйте https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh.
Изменение виджета системы затруднительно.
Ответ 3
Если вы не хотите использовать отражение, как в примере выше, вы можете получить дочерний элемент из вашего SwipeRefreshLayout с индексом 0. Это будет CircleImageView, чтобы вы могли установить любой Drawable к нему.