如何防止单击项目后关闭微调器下拉菜单?

时间:2019-04-23 13:39:53

标签: android android-spinner

点击某个项目后,我想保持微调框下拉菜单打开。

它的默认行为是选中一个项目后将其关闭。相反,我希望它保持打开状态,以允许多次单击不同的项目而不关闭微调器。

    function mouseOver() { 
         var myList = document.getElementsByClassName("helper");
         myList.forEach(function(item){
             item.style.display="block";
         });
    }

我不知道是否有特定的onClick / onSelection侦听器可以重写以防止微调器关闭。

我已阅读的大多数问题都讨论了如何动态刷新或关闭/打开微调框,但我希望它保持打开状态,并通过选择第一项或在活动时单击其外部使其闭合。

2 个答案:

答案 0 :(得分:1)

您可以扩展Spinner类并重写PerformClick()方法,以便选择一个项目时,旋转器不会关闭。 例如:

        public override bool PerformClick()
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(Context);
        //builder.SetItems(_items, this); or builder.SetMultiChoiceItems(_items, _selection, this);
        builder.SetPositiveButton("OK", delegate { builder.Dispose(); });
        builder.Show();
        return true;
    }

答案 1 :(得分:0)

如果有帮助,您可以扩展ArrayAdapter并覆盖areAllItemsEnabled(): Boolean以返回false。这样可以防止点击时关闭下拉菜单。

此外,如果要保留点击效果,可以覆盖getDropDownView()来膨胀自定义布局并将其添加到自定义布局的根视图:

android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:focusable="true"

缺点是单击某个项目时不会触发AdapterView.OnItemSelectedListener侦听器。一种解决方法是将单击侦听器添加到在getDropDownView()上放大的视图中