我知道你可以應用自定義字體到一個TextView在Android中是這樣的:的Android DatePicker的字樣
TextView tv = findViewById(R.id.textview01);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/BLACKROSE.TTF");
tv.setTypeface(tf);
是否有任何可能的方式爲一個datepicker做到這一點?
我知道你可以應用自定義字體到一個TextView在Android中是這樣的:的Android DatePicker的字樣
TextView tv = findViewById(R.id.textview01);
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/BLACKROSE.TTF");
tv.setTypeface(tf);
是否有任何可能的方式爲一個datepicker做到這一點?
看了看源代碼後,Datepicker小部件包含3個NumberPicker小部件(用於日,月,年),而小部件又包含TextView。因此,您必須在DatePicker內的NumberPickers內部爲TextView設置字體。
我想你必須得到NumberPicker和DatePicker的源代碼,並修改源代碼來實現這一點,說起來容易做起來難。
這是我的代碼。我希望這會對某人有用。
DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
LinearLayout layout1 = (LinearLayout) datePicker.getChildAt(0);
LinearLayout layout = layout1.getChildAt(0);
// day
LinearLayout day = (LinearLayout) layout.getChildAt(0);
setNumberPicker(day);
// month
LinearLayout month = (LinearLayout) layout.getChildAt(1);
setNumberPicker(month);
// year
LinearLayout year = (LinearLayout) layout.getChildAt(2);
setNumberPicker(year);
...
private void setNumberPicker(LinearLayout ll) {
((ImageButton) ll.getChildAt(0)).setBackgroundResource(R.drawable.plus_button);
((ImageButton) ll.getChildAt(2)).setBackgroundResource(R.drawable.minus_button);
EditText et = (EditText) ll.getChildAt(1);
et.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
et.setTypeface(youtTypeface);
}
這裏是我的解決方案:
private void overrideFonts(View v) {
ViewGroup picker;
try {
picker = (DatePicker) v;
} catch (Exception e) {
picker = (TimePicker) v;
}
LinearLayout layout1 = (LinearLayout) picker.getChildAt(0);
if (picker instanceof TimePicker) {
if (layout1.getChildAt(1) instanceof NumberPicker) {
NumberPicker v1 = (NumberPicker) layout1.getChildAt(1);
final int count = v1.getChildCount();
for (int i = 0; i < count; i++) {
View child = v1.getChildAt(i);
try {
Field wheelpaint_field = v1.getClass().getDeclaredField("mSelectorWheelPaint");
wheelpaint_field.setAccessible(true);
((Paint) wheelpaint_field.get(v1)).setTypeface(//your font here);
((Paint) wheelpaint_field.get(v1)).setColor(getResources().getColor(R.color.colorOrange));
((EditText) child).setTypeface(// your font here);
v1.invalidate();
} catch (Exception e) {
//TODO catch.
//If java cant find field then it will catch here and app wont crash.
}
}
}
}
LinearLayout layout = (LinearLayout) layout1.getChildAt(0);
for (int j = 0; j < 3; j++) {
try {
if (layout.getChildAt(j) instanceof NumberPicker) {
NumberPicker v1 = (NumberPicker) layout.getChildAt(j);
final int count = v1.getChildCount();
for (int i = 0; i < count; i++) {
View child = v1.getChildAt(i);
try {
Field wheelpaint_field = v1.getClass().getDeclaredField("mSelectorWheelPaint");
wheelpaint_field.setAccessible(true);
((Paint) wheelpaint_field.get(v1)).setTypeface(//your font here);
((Paint) wheelpaint_field.get(v1)).setColor(getResources().getColor(R.color.colorOrange));
((EditText) child).setTypeface(//your font here);
v1.invalidate();
} catch (Exception e) {
//TODO catch.
//If java cant find field then it will catch here and app wont crash.
}
}
}
} catch (Exception e) {
//TODO catch.
//If java cant find field then it will catch here and app wont crash.
}
}
}
如果你可以使用DatePickerDialog,則U可以簡單地獲得對話框的按鈕,如:
DatePickerDialog datePickerDialog; // GET your dialog
datePickerDialog.show();
datePickerDialog.getButton(DatePickerDialog.BUTTON_POSITIVE).setTextSize(30); // 30 is your text size
datePickerDialog.getButton(DatePickerDialog.BUTTON_NEGATIVE).setTextSize(30);
Kotlin-Anko相當於SKG的解決方案
startTimePicker = timePicker {
this.applyRecursively {
when(it) {
is NumberPicker -> {
val paintField = it.javaClass.getDeclaredField("mSelectorWheelPaint")
paintField.isAccessible = true
(paintField.get(it) as? Paint)?.typeface = //your font here
}
is TextView -> {
it.typeface = //your font here
}
}
}
從哪裏可以獲得源代碼? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-02-10 01:22:24
GrepCode,所有的android源碼都可以在那裏找到。 DatePicker http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/android/widget/DatePicker.java NumberPicker http://grepcode.com /file/repository.grepcode.com/java/ext/com.google.android/android/1.5_r4/com/android/internal/widget/NumberPicker.java – triggs 2012-02-10 09:51:22