Android NumberPicker 修改分割線顏色和高度及字體顏色大小

(1)重寫NumberPicker已達到修改顯示字體顏色大小android

public class TextColorNumberPicker extends NumberPicker {
 
    public TextColorNumberPicker(Context context) {
        super(context);
    }
 
    public TextColorNumberPicker(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    public TextColorNumberPicker(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
 
    @Override
    public void addView(View child) {
        super.addView(child);
        updateView(child);
    }
 
    @Override
    public void addView(View child, int index,
                        android.view.ViewGroup.LayoutParams params) {
        super.addView(child, index, params);
        updateView(child);
    }
 
    @Override
    public void addView(View child, android.view.ViewGroup.LayoutParams params) {
        super.addView(child, params);
        updateView(child);
    }
 
    public void updateView(View view) {
        if (view instanceof EditText) {
            //這裏修改顯示字體的屬性,主要修改顏色
            ((EditText) view).setTextColor(Color.parseColor("#BAA785"));
        }
    }
}

(2)修改分割線顏色,須要在初始化控件後,經過反射進行動態設置顏色。ide

**********注意:在NumberPicker 的 setDisplayedValues調用後調用以下方法:字體

 1 private void setNumberPickerDividerColor(NumberPicker numberPicker) {
 2         NumberPicker picker = numberPicker;
 3         Field[] pickerFields = NumberPicker.class.getDeclaredFields();
 4         for (Field pf : pickerFields) {
 5             if (pf.getName().equals("mSelectionDivider")) {
 6                 pf.setAccessible(true);
 7                 try {
 8                     //設置分割線的顏色值 透明
 9                     pf.set(picker, new ColorDrawable(this.getResources().getColor(android.R.color.transparent)));
10                 } catch (IllegalArgumentException e) {
11                     e.printStackTrace();
12                 } catch (Resources.NotFoundException e) {
13                     e.printStackTrace();
14                 } catch (IllegalAccessException e) {
15                     e.printStackTrace();
16                 }
17                 break;
18             }
19         }
20     }

注意:修改分割線的高度:查看NumberPicker,找到mSelectionDividerHeight屬性,修改:this

 1 // 分割線高度
 2         for (Field pf : pickerFields) {
 3             if (pf.getName().equals("mSelectionDividerHeight")) {
 4                 pf.setAccessible(true);
 5                 try {
 6                     int result = 1;
 7                     pf.set(picker, result);
 8                 } catch (Exception e){
 9                     e.printStackTrace();
10                 }
11                 break;
12             }
13         }

 

(3)使用NumberPicker 注意:spa

1 // 禁止點擊後打開鍵盤
2 picker.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
3 // 設置最大值、最小值 已達到顯示全部符合條件的數值
4 picker.setMaxValue(array.length - 1);
5 picker.setMinValue(0);

(4) List 轉換爲 Array[], 以便NumberPicker設置setDisplayedValues(String[]):.net

String[] array = new String[list.size()];
list.toArray(array);

鏈接:http://my.oschina.net/yaly/blog/532153code

相關文章
相關標籤/搜索