如何在TimePicker关闭键盘图标?

时间:2017-10-17 13:06:24

标签: android android-timepicker

我有一个时间选择器,一切运作良好,但问题是我不能让它看起来像设计师想要的。现在它看起来像这样: screenshot

我需要在按钮下隐藏这个键盘图标。我该怎么做?它只是一个原型,所以这里只有它的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:tag="ww">

  <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Time"
    android:textAppearance="?android:attr/textAppearanceLarge" />

  <TimePicker
    android:id="@+id/timePicker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:amPmBackgroundColor="#6400AA"
    android:numbersSelectorColor="#6400AA" />

  <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end"
    android:orientation="horizontal">

    <Button
      android:id="@+id/button2"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="Cancel"
      android:textColor="#6400AA" />

    <Button
      android:id="@+id/button1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="OK"
      android:textColor="#6400AA" />

  </LinearLayout>

</LinearLayout>

5 个答案:

答案 0 :(得分:2)

据我所知,无法删除此图标,它是Android O上UI的一部分。

图标用于使手动编辑时间更加明显,因为在以前的版本中,您可以点击时间并通过键盘更改它并不明显

答案 1 :(得分:1)

我刚刚在布局检查器中检查了层次结构,并找到了该键盘图标。由于纵向和横向的层次结构不同,因此我们对此进行了方向检查。我尝试了这段代码,它工作正常。 PS:Kotlin代码

        try
        {
            if (orientation == Configuration.ORIENTATION_PORTRAIT)
            {
                ((timePicker.getChildAt(0) as LinearLayout).getChildAt(4) as LinearLayout).getChildAt(0).visibility = View.GONE
            }
            else
            {
                (((timePicker.getChildAt(0) as LinearLayout).getChildAt(2) as LinearLayout).getChildAt(2) as LinearLayout).getChildAt(0).visibility = View.GONE
            }
        }
        catch (ex: Exception)
        {
        }

答案 2 :(得分:0)

尝试使用:

timePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);

您也可以在xml中使用android:descendantFocusability="blocksDescendants"

答案 3 :(得分:0)

Android N:

日期/时间选择器带有滚动时钟,并改善了与用户的交互以进行输入,但使minute selection变得更加乏味。滚动时钟在24h模式下占用大量时间,而使用拇指无法查看确切时间

enter image description here

Android O:

日期/时间选择器(在日历,时钟等中)在左下方有一个小图标(手动输入):键盘。轻按它会切换到基于文本的条目,您可以在其中手动输入确切的准确时间。

enter image description here enter image description here

答案 4 :(得分:0)

好的,这是我的解决方案。检查布局后,我发现键盘为AppCompatImageButton。因此,您只需对TimePicker的{​​{1}}进行递归。因此,您可以这样称呼它:

Viewgroup

您将获得所需的布局。

警告!这在很大程度上取决于键盘按钮是唯一的private fun initTimePicker() { timePicker.setIs24HourView(true) setImageButtonToGone(timePicker) } private fun setImageButtonToGone(viewGroup: ViewGroup) { for (i in 0 until viewGroup.childCount) { val child = viewGroup.getChildAt(i) if (child is LinearLayout) { setImageButtonToGone(child) } else if (child is AppCompatImageButton) { child.visibility = View.GONE } } } ,如果他们更改TimePicker的XML,则它将无法正常工作。