如何在Layout XML中设置NumberPicker的水平线为白色?
如何在Layout XML中将NumberPicker的水平线设置为白色
方法1:自定义主题(推荐)
在res/values/styles.xml中创建针对NumberPicker的主题,指定分割线颜色:
<style name="NumberPickerWhiteDivider" parent="Theme.MaterialComponents.Light"> <!-- 设置未激活状态的分割线颜色 --> <item name="colorControlNormal">@android:color/white</item> <!-- 设置激活状态的分割线颜色(可选,保持视觉统一) --> <item name="colorControlActivated">@android:color/white</item> </style>
接着在布局XML里给NumberPicker应用这个主题:
<NumberPicker android:id="@+id/my_number_picker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:theme="@style/NumberPickerWhiteDivider" />
方法2:适配旧版本的Drawable方案(需少量代码配合)
如果主题方法在低版本Android上不生效,先定义白色分割线的Drawable文件res/drawable/white_line.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <stroke android:width="1dp" android:color="@android:color/white" /> <padding android:bottom="1dp" /> <!-- 避免线条被控件裁剪 --> </shape>
再通过代码反射设置分割线(纯XML无法直接完成,需补充以下代码):
// Java示例 NumberPicker picker = findViewById(R.id.my_number_picker); try { Field field = NumberPicker.class.getDeclaredField("mSelectionDivider"); field.setAccessible(true); field.set(picker, getResources().getDrawable(R.drawable.white_line)); } catch (Exception e) { e.printStackTrace(); }
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

