java - 自定义微调器 : setSelection scrolling down

标签 java android

我有一个自定义微调器 我有一个提示标签位于数组(旋转器)的最后一个位置,因此为了显示它,我将选择设置为最后一个位置,如下所示:

ArrayAdapter myAdapter = new MySpinnerAdapter(this,R.layout.spinner_item,createMyList());
myAdapter.setDropDownViewResource(spinner_item);
mySpinner.setAdapter(subCategoryAdapter);
 mySpinner.setSelection(myList.size() - 1);

它工作得很好,但是当我触摸微调器来选择一个项目时,由于我的 setSelection,滚动条会“聚焦”微调器的底部。

如何将焦点集中在微调器的第一个项目上或“滚动”到其顶部?

谢谢!

最佳答案

您可以通过扩展 Spinner 并重写负责设置并在下拉列表中显示值列表的方法来实现此目的:

public class CustomSpinner extends Spinner {

    private boolean mToggleFlag = true;

    public CustomSpinner(Context context, AttributeSet attrs, int defStyle, int mode) {
        super(context, attrs, defStyle, mode);
    }

    public CustomSpinner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomSpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomSpinner(Context context, int mode) {
        super(context, mode);
    }

    public CustomSpinner(Context context) {
        super(context);
    }

    @Override
    public int getSelectedItemPosition() {
        if (!mToggleFlag) {
            return 0; // Gets to the first element
        }
        return super.getSelectedItemPosition();
    }

    @Override
    public boolean performClick() {
        mToggleFlag = false;
        boolean result = super.performClick();
        mToggleFlag = true;
        return result;
    }

}

关于java - 自定义微调器 : setSelection scrolling down,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24543250/

相关文章:

android - 为什么 aapt 不在 apk 中添加 `<values/>`?

java - 将 Java 域对象映射到表的良好设计(使用 Hibernate)

Railo 上的 JavaMelody : no SQL statistics?

java - 如何才能让 Eclipse 在我编辑代码时自动更新窗口中的代码?

android - 如何正确实现onDestroy方法?

Android SharedPreferences,如何保存一个简单的 int 变量

Android Studio 将外部项目添加到 build.gradle

java - 在android中覆盖/替换/res/values/color.xml

java - 当焦点离开 TextArea 控件时会触发什么事件?

java - 从javamail读取需要很长时间