我正在尝试为SwipeRefreshLayout的
编写自定义setter setColorScheme(int... colors)
。
但似乎它的参数是varargs。
我现在只能绑定一种颜色,如下所示:
@BindingAdapter("app:colorSchemeResources")
public static void bindRefreshColor(SwipeRefreshLayout swipeRefreshLayout, int colorResId) {
swipeRefreshLayout.setColorSchemeColors(colorResId);
}
的xml:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:colorSchemeResources ="@{@color/primary}"
/>
我的问题是:
如何为varargs编写自定义setter?
如何在xml文件中绑定varargs?
答案 0 :(得分:1)
请试试这个:
在colors.xml中指定一个包含所需颜色的整数数组,例如:
<integer-array name="color_scheme" >
<item>@color/first_color</item>
<item>@color/second_color</item>
</integer-array>
更改你的bindingadapter:
@BindingAdapter("app:colorSchemeResources")
public static void bindRefreshColor(SwipeRefreshLayout swipeRefreshLayout, int[] colorResIds) {
swipeRefreshLayout.setColorSchemeColors(colorResIds);
}
在您的视图中引用您的数组:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
app:colorSchemeResources ="@{@intArray/color_scheme}"
android:layout_height="wrap_content">