0

我想定製數字選擇器選擇分隔線。NumberPicker材質樣式自定義選擇分隔線

number picker selection divider

我創建了自定義繪製用於數字選擇器選擇分頻器。

我創建了自定義材質樣式,繼承了數字選擇器材質樣式。

<style name="MyNumberPickerTheme" parent="@android:style/Widget.Material.NumberPicker"> 
    <item name="colorControlNormal ">#2e7d32</item> 
    <item name="android:background">#69f0ae</item> 
    <item name="selectionDivider">@drawable/my_number_picker_divider</item> 
</style> 

但selectionDivider屬性無法識別。如何將我的自定義繪圖添加到數字選取器材質樣式以設置自定義選擇分隔線?

+0

檢查此https://stackoverflow.com/questions/20148671/android-how-to-change-the-color-of-the-datepicker-divider/20291416#20291416。 – Raghunandan

+0

這沒有用。它不是我想改變的選擇分隔線的顏色。我創建了一個可用作數字選擇器的選擇分隔符的drawable。但不能將它分配給數字選擇器,因爲selectionDivider屬性無法識別出現編譯錯誤,即使是android:selectionDivider同樣的問題。 –

+0

你可以設置一個drawable我還沒試過。但發佈的鏈接有一個使用反射的答案,並且還提供了一個庫。看看答案相應地修改它 – Raghunandan

回答

0

看起來好像沒有簡單的方法來實現這一點。在這種情況下,This StackOverflow solution是唯一足夠好的解決方案。 爲了其他讀者的緣故,我會在這裏複製/粘貼答案。

private void setDividerColor(NumberPicker picker, Drawable customDrawable) { 

    java.lang.reflect.Field[] pickerFields = NumberPicker.class.getDeclaredFields(); 
    for (java.lang.reflect.Field pf : pickerFields) { 
     if (pf.getName().equals("mSelectionDivider")) { 
      pf.setAccessible(true); 
      try { 
       pf.set(picker, customDrawable); 
      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (Resources.NotFoundException e) { 
       e.printStackTrace(); 
      } 
      catch (IllegalAccessException e) { 
       e.printStackTrace(); 
      } 
      break; 
     } 
    } 
} 

現在在你的代碼的某個地方,你可以調用setDividerColor(選擇器,drawableObject)設置分隔條的顏色。

+0

我不想改變選擇分隔線的顏色。我想使用自定義drawable(不同形狀)作爲選擇分隔線。 –

+0

我已經更新了支持drawable的答案。 –