Android・・・NumberPickerの文字サイズ/文字色変更 [Android]
AndroidのNumberPickerによる数字のロール表示について文字サイズを変更した時の備忘録。
最初、NumberPickerからEditTextを取得しそれに対して文字サイズと文字色を設定したが中心部分の文字サイズ及び文字色は設定した通りになったが少しでも上下にスクロールすると元に戻ってしまった。
調べるとスクロールする度にレイアウトに対してViewが追加されていた。それによってレイアウトの設定情報がクリアされてしまうのでその追加される部分で文字サイズと文字色を設定するように変更。
下記はNumberPickerを継承したクラスを用意して文字サイズと文字色を変更した実装サンプルになる。
このクラスを表示したViewに追加すればロール型の数字スクロール表示が出来る。
------------------------------------------------------------------------
■実装
------------------------------------------------------------------------
public class MyNumberPicker extends NumberPicker {
public MyNumberPicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
super.addView(child, params);
updateView(child);
}
@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
super.addView(child, index, params);
updateView(child);
}
private void updateView(View child) {
if (child instanceof EditText) {
((EditText) child).setTextSize(TypedValue.COMPLEX_UNIT_SP, 20.0f);
((EditText) child).setTextColor(Color.BLACK);
}
}
}
とりあえず、これで期待通り文字サイズも文字色も変更出来た。
最初、NumberPickerからEditTextを取得しそれに対して文字サイズと文字色を設定したが中心部分の文字サイズ及び文字色は設定した通りになったが少しでも上下にスクロールすると元に戻ってしまった。
調べるとスクロールする度にレイアウトに対してViewが追加されていた。それによってレイアウトの設定情報がクリアされてしまうのでその追加される部分で文字サイズと文字色を設定するように変更。
下記はNumberPickerを継承したクラスを用意して文字サイズと文字色を変更した実装サンプルになる。
このクラスを表示したViewに追加すればロール型の数字スクロール表示が出来る。
------------------------------------------------------------------------
■実装
------------------------------------------------------------------------
public class MyNumberPicker extends NumberPicker {
public MyNumberPicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
super.addView(child, params);
updateView(child);
}
@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
super.addView(child, index, params);
updateView(child);
}
private void updateView(View child) {
if (child instanceof EditText) {
((EditText) child).setTextSize(TypedValue.COMPLEX_UNIT_SP, 20.0f);
((EditText) child).setTextColor(Color.BLACK);
}
}
}
とりあえず、これで期待通り文字サイズも文字色も変更出来た。
コメント 0