自定义微调器:向下滚动setSelection

Iri*_*lho 2 java android

我有一个自定义微调器我有一个提示标签位于我的数组(微调器)的最后位置,所以要显示它我将选择设置到最后一个位置,如下所示:

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

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

如何关注微调器的第一项或"滚动"到它的顶部?

谢谢!

Gin*_*ead 5

您可以通过扩展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;
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 我忘了改用XML来使用我的自定义微调器:) thakns (3认同)
  • 谢谢你的回答!一个noob问题,如何将方法findViewById转换为我的自定义微调器(类)? (2认同)