有没有办法更改Android NumberPicker
上两条水平线的颜色?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您只想更改NumberPicker here的颜色,这是使用以下内容的非常简单的解决方案。
private void setDividerColor(NumberPicker picker, int color) {
java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields();
for (java.lang.reflect.Field pf : pickerFields) {
if (pf.getName().equals("mSelectionDivider")) {
pf.setAccessible(true);
try {
ColorDrawable colorDrawable = new ColorDrawable(color);
pf.set(picker, colorDrawable);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Resources.NotFoundException e) {
e.printStackTrace();
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
}
然后调用这样的函数
setDividerColor(mNumberPicker, Color.GREEN);
尽管第一个解决方案很简单,但是它受到限制。我建议使用this存储库,该存储库提供MaterialNumberPickers,允许进行更多的自定义。有关于如何在回购的自述文件中添加Gradle依赖关系的说明,因此在这里我将不包括它们,但是可以按如下所示在xml中添加MaterialNumberPickers。
<com.github.stephenvinouze.materialnumberpickercore.MaterialNumberPicker
android:layout_width="match_parent"
android:layout_height="match_parent"
app:mnpMaxValue="50"
app:mnpMinValue="1"
app:mnpEditable="false"
app:mnpFontname="Hand.ttf"
app:mnpSeparatorColor="@color/colorAccent"
app:mnpTextColor="@color/colorPrimary"
app:mnpTextSize="16sp"
app:mnpTextStyle="bold"
app:mnpValue="10"
app:mnpWrapped="false" />
此外,MaterialNumberPicker扩展了NumberPicker,因此在xml中进行此更改将不需要在.java文件中进行任何后端更改。