【问题标题】:Android Time Picker shows in portrait and is cut off in landscapeAndroid Time Picker 纵向显示,横向被截断
【发布时间】:2017-03-04 01:39:27
【问题描述】:

我正在尝试让时间选择器以横向显示完整的时钟。 TimePickerGridLayout 中。它不会以DialogFragmentTimePickerDialog 的形式覆盖屏幕。

目前,这是横向显示的内容:

如您所见,您无法选择时间,只能选择默认时间。我试图让它像纵向一样显示时钟(有效):

时间选择器的布局:

<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;
    }
}

我浏览了互联网,发现这些帖子没有帮助我:

  1. Android TimePicker not displayed well on landscape mode

我的时间选择器没有标题。

  1. ScrollView fighting with scroll of TimePicker, Timepicker not scrolling as a result

已经实现了

  1. https://code.google.com/p/android/issues/detail?id=201766

尝试了清单中的代码,但仍然无法正常工作。

更新 正如 siddesh 所建议的,将TimePickerlayout_height 设置为200dp 有效,但它会切断肖像。现在,肖像是200dp 高,但被截断,风景完全显示:

【问题讨论】:

  • 最好在方向更改时关闭 datepickerdialog 默认日历做同样的事情检查你的日历应用程序以设置闹钟
  • @siddhesh 这不是 DatePickerDialog,它是 TimePicker(也不是 TimePickerDialog)
  • 同样的事情,请检查您何时在您的手机点击时间选择器上设置闹钟并旋转您的手机计时器被关闭
  • @siddhesh 所以当我旋转手机时 TimePicker 会消失?但是为什么当我旋转回来时仍然有效?
  • 我不明白你想说什么最好在 timepicker 上使用dismiss来解雇

标签: android android-timepicker


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 2014-02-07
    相关资源
    最近更新 更多