对于Holo TimePicker,您可以使用它。
public static void setTimePickerHeightTopBottomMargin(
TimePicker timePicker, int height, int topMargin, int bottomMargin) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
try {
Field f;
View v;
ViewGroup.MarginLayoutParams params;
// mHourSpinner
f = TimePicker.class.getDeclaredField("mHourSpinner");
f.setAccessible(true);
v = (View) f.get(timePicker);
params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
params.height = height;
params.topMargin = topMargin;
params.bottomMargin = bottomMargin;
// mMinuteSpinner
f = TimePicker.class.getDeclaredField("mMinuteSpinner");
f.setAccessible(true);
v = (View) f.get(timePicker);
params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
params.height = height;
params.topMargin = topMargin;
params.bottomMargin = bottomMargin;
// mAmPmSpinner
f = TimePicker.class.getDeclaredField("mAmPmSpinner");
f.setAccessible(true);
v = (View) f.get(timePicker);
params = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
params.height = height;
params.topMargin = topMargin;
params.bottomMargin = bottomMargin;
} catch (Exception e) {
Log.w(TAG, e);
}
}
}
单位是像素,所以一定要从dp转换。不要使用小于120dp的高度。通过使用领域mDaySpinner
,mMonthSpinner
和mYearSpinner
而不是反射
setTimePickerHeightTopBottomMargin(mTimePicker,
ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0);
虽然我没有测试它,它应该是的DatePicker相同:
保持高度和消除垂直利润率一般应足够。
适合我+1 – mmirwaldt