代码之家  ›  专栏  ›  技术社区  ›  Boycott A.I.

Android Spinner在调用setSelection()后未刷新

  •  0
  • Boycott A.I.  · 技术社区  · 6 年前

    旋转器 在我的应用程序中,从数组填充,其宽度为 wrap_content .

    这些要素包括:

    String[] items = {
        "Select...",
        "1",
        "2",
        "3"
    }
    

    用户界面还具有

    spinner.setSelection(0, true); // Using false doesn't help.
    

    启动应用程序时,当前选定的项目正确显示为 选择。。。

    如果我选择“2”项,微调器将正确显示 2

    但是如果我单击“清除”按钮,微调器只显示一个截断的 选择 .

    setSelection() ,似乎旋转器未能重新绘制自身。在本例中,这是一个问题,因为新选择的字符串比前一个字符串长,因此UI上会出现截断。

    解决,之后 ,我试着添加

    spinner.invalidate();
    

    然后

    spinner.post(() -> { // postDelayed() makes no difference either.
        spinner.invalidate();
    });
    

    更新

    下面是我的微调器的布局:

    <Spinner
        android:id="@+id/spinnerDobDay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/textView"
        app:layout_constraintStart_toStartOf="parent"
        android:hint="@string/select_day" />
    <Spinner
        android:id="@+id/spinnerDobMonth"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/textView"
        app:layout_constraintStart_toEndOf="@id/spinnerDobDay"
        android:hint="@string/select_month" />
    <Spinner
        android:id="@+id/spinnerDobYear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/textView"
        app:layout_constraintStart_toEndOf="@id/spinnerDobMonth"
        android:hint="@string/select_year" />
    
    0 回复  |  直到 6 年前