Java 自定义微调器:向下滚动
我有一个定制的微调器 我在数组(微调器)的最后一个位置有一个提示标签,因此为了显示它,我将选择设置为最后一个位置,如下所示:Java 自定义微调器:向下滚动,java,android,Java,Android,我有一个定制的微调器 我在数组(微调器)的最后一个位置有一个提示标签,因此为了显示它,我将选择设置为最后一个位置,如下所示: ArrayAdapter myAdapter = new MySpinnerAdapter(this,R.layout.spinner_item,createMyList()); myAdapter.setDropDownViewResource(spinner_item); mySpinner.setAdapter(subCategoryAdapter); mySpi
ArrayAdapter myAdapter = new MySpinnerAdapter(this,R.layout.spinner_item,createMyList());
myAdapter.setDropDownViewResource(spinner_item);
mySpinner.setAdapter(subCategoryAdapter);
mySpinner.setSelection(myList.size() - 1);
它工作得很好,但当我触摸微调器选择一个项目时,滚动条会“聚焦”微调器的底部,因为我的选择
如何将注意力集中在微调器的第一项或“滚动”到其顶部
谢谢 您可以通过扩展
微调器
和覆盖负责设置的方法并在下拉列表中显示值列表来实现这一点:
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;
}
}
谢谢你的回答!一个很难回答的问题,我如何将findViewById方法强制转换到我的自定义微调器(类)?我忘了更改XML以使用我的自定义微调器:)Thaksin我的案例
performClicked
从未被调用。为什么会这样?@masterwok您应该打开一个单独的线程,因为这是用于滚动的down@GingerHead我使用这个实现来解决向下滚动问题。但是,这个解决方案对我不起作用,因为从未调用performClick
方法。不过,我最终选择了一个不同的解决方案。