web-dev-qa-db-ja.com

Android:ナンバーピッカーで仕切り線を削除する方法

ナンバーピッカーで仕切り線を削除するにはどうすればよいですか?xmlを使用してsetShowDividerをnoneに設定してみました(noneは存在しないようです)。

picker.setShowDividers(LinearLayout.SHOW_DIVIDER_NONE);

XML:

Android:showDividers="none"

enter image description here

9
blackHawk

Numberpickerのテーマを設定する

<NumberPicker
   ...
   Android:theme="@style/DefaultNumberPickerTheme" />

style.xml

<style name="DefaultNumberPickerTheme" parent="AppTheme">
        <item name="colorControlNormal">@color/transparent</item>
</style>

[〜#〜]または[〜#〜]

private void changeDividerColor(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;
        }
    }
}

そしてそれを次のように設定します

changeDividerColor(yournumberpicker, Color.parseColor("#00ffffff"));
13

このコードの方が良いでしょう

private void changeDividerColor(NumberPicker picker, int color) {
        try {
            Field mField = NumberPicker.class.getDeclaredField("mSelectionDivider");
            mField.setAccessible(true);
            ColorDrawable colorDrawable = new ColorDrawable(color);
            mField.set(picker, colorDrawable);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
3
coffee