我正在尝试让时间选择器在横向显示完整的时钟。 TimePicker
位于GridLayout
。它不会将屏幕覆盖为DialogFragment
或TimePickerDialog
。
目前,这是它在风景中的表现:
正如您所看到的,没有什么可以选择的时间,只有默认时间。我试图让它显示时钟,就像在肖像(工作):
时间选择器的布局:
<package.name.ScrollableTimePicker
android:id="@+id/time_picker"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
扩展TimePicker
的类:
public class ScrollableTimePicker extends TimePicker {
public ScrollableTimePicker(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public ScrollableTimePicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollableTimePicker(Context context) {
super(context);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// Keeps events to time picker
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
ViewParent p = getParent();
if (p != null) {
p.requestDisallowInterceptTouchEvent(true);
}
}
return false;
}
}
我浏览了互联网,发现没有帮助我的这些帖子:
我的时间选择器没有标题。
它已经实施
尝试使用清单中的代码,但仍无效。
更新
正如siddesh所建议的那样,将layout_height
的{{1}}设置为TimePicker
可以正常工作,但会切断肖像。现在,肖像高200dp
但是被切断,景观完全显示出来:
答案 0 :(得分:1)
当TimePicker在ScrollView中时,我也遇到了这个问题,你的诊断很有帮助。
您可以在活动中以编程方式设置TimePicker的高度。
在onCreate()中添加:
TimePicker tp = (TimePicker) findViewById(R.id.time_picker);
// get display dimensions
Point p = new Point();
getWindowManager().getDefaultDisplay().getSize(p);
int newHeight;
if(p.x > p.y) {
// if landscape, convert 200dp to px
newHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
} else {
newHeight = WindowManager.LayoutParams.WRAP_CONTENT;
}
// set TimePicker height
tp.getLayoutParams().height = newHeight;