首页 > 解决方案 > Android NumberPicker 在加载视图时渲染滚动条

问题描述

我正在构建一个使用 NumberPickers 的小应用程序。一切都按预期工作,除了导航到包含选择器的片段时,它会在每个 NumberPicker 的右上角显示小滚动条,然后它们会在几秒钟后消失。

NumberPicker 中的小矩形

当我导航到片段并在它们上设置 android:descendantFocusability="blocksDescendants" 无济于事时,我认为这与它们获得焦点有关。当我设置<requestFocus />另一个元素并且它不受禁用滚动指示器的影响时,也会出现此问题。

我没有做任何自定义样式,选择器的代码是:

<NumberPicker
        android:id="@+id/forTimeSecondsPicker"
        android:layout_width="90dp"
        android:layout_height="240dp"
        android:layout_marginTop="206dp"
        android:layout_marginEnd="90dp"
        android:descendantFocusability="blocksDescendants"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"></NumberPicker>

在 .kt 文件中,它们被初始化为

private var workSecondsPicker : NumberPicker? = null

我设置这样的值

workSecondsPicker = requireView().findViewById(R.id.forTimeSecondsPicker)
    workSecondsPicker?.minValue = 0
    workSecondsPicker?.maxValue = 59
    workSecondsPicker?.value = WORK_SECONDS_DEFAULT

一个奇怪的观察结果是,在我的物理设备(Pixel 4)和模拟器(Pixel 3a)上运行应用程序时,第一次运行应用程序时不会出现问题。但是,如果我从应用程序内的任何位置导航到设置屏幕 (androidx.preference),然后使用 NumberPickers 导航回其中一个片段,滚动条每次都会出现,直到重新启动应用程序,这种行为是可重现且一致的。

我的目标是 sdk 30(分钟 23)并且正在使用 Android Studio 4.1.2。

标签: androidkotlinfocussettingsnumberpicker

解决方案


我花了一段时间才意识到这些东西是滚动条,但仍然不确定为什么它们只在访问首选项屏幕后才出现但设置

android:scrollbarSize="0dp"

成功了。


推荐阅读