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