【问题标题】:Getting Problem In Spinner Android Studio在 Spinner Android Studio 中遇到问题
【发布时间】:2020-06-14 14:17:00
【问题描述】:

我正在制作一个应用程序。我正在尝试在我的 Android 应用程序中添加一个可滚动的微调器,如下图所示。但是我尝试了很多代码,但没有得到正确的结果。主要问题是,当我在我的 android 应用程序中实现一个微调器并在其中添加一个适配器时,它就像一个普通的下拉微调器一样工作,但是我的微调器有太多项目,我希望有人在他或她时滚动点击微调器。

我想做这样的微调器:=

尝试我的代码后,我无法滚动显示正常下拉项目的微调器

如果有人有解决办法请回答

在下图中,我可以滚动微调器并选择所需的项目

你可以查看这张图片我想制作一个相同的可滚动微调器,现在这是我尝试过的代码 -

<Spinner
        android:id="@+id/test_spinner"
        android:layout_width="50dp"
        android:layout_height="match_parent"
        android:spinnerMode="dropdown"/>

Java --

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.days, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

【问题讨论】:

  • 你用上面的代码得到了什么结果?
  • @user667634 我无法滚动微调器
  • 我不认为,可以限制在微调器中显示的项目数量。如果您有大量项目,并且微调器超出屏幕,您将能够滚动。如果您想限制项目数量,请尝试寻找库或实现自定义微调器。

标签: java android android-arrayadapter android-spinner


【解决方案1】:

唯一的问题是您正在使用带有微调器的editText,并且当微调器打开时键盘也会打开,然后您的微调器项目隐藏在键盘后面,因此解决方案只是使用没有editText的微调器。

【讨论】:

    【解决方案2】:

    通过反射,访问私有的mPopup

    Spinner spinner = (Spinner) findViewById(R.id.your_spinner);
      try {
        Field popup = Spinner.class.getDeclaredField("mPopup");
        popup.setAccessible(true);
        //private mPopup 
        android.widget.ListPopupWindow popupw = (android.widget.ListPopupWindow)      popup.get(spinner);
    popupw.setHeight(500);//height in px
    }
    catch (Exception ex) {
        // print
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多