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

これは役に立ちません。変更したい選択ディバイダの色ではありません。ナンバー・ピッカーの選択ディバイダーとして使用するドロウアーブルを作成しました。しかしselectionDividerプロパティがコンパイルエラーであると認識されず、アンドロイド:selectionDivider同じ問題でさえ、数字ピッカーに割り当てることはできません。 –

+0

私は試していないドロアブルを設定することができます。投稿されたリンクには反射を使用した回答があり、図書館も提案されています。答えを見てくださいそれに応じてそれを修正してください – 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

私は選択ディバイダの色を変更しようとしていません。選択ディバイダとしてカスタムのドロアブル(別のシェイプ)を使用したい。 –

+0

drawableをサポートするための答えを更新しました。 –

関連する問題