将 OnFocusChangeListener 和 OnItemSelectedListener 应用于 Spinner
Applying OnFocusChangeListener and OnItemSelectedListener to Spinner
我有一个微调器,可以与标准 OnItemSelectedListener 一起正常工作以呈现一组选项:
s.setAdapter(adapter);
s.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int selectedPosition, long arg3) {
if (selectedPosition == 0) {
// do stuff
} else {
// other stuff
}
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
但是,我有一个新的要求,当用户点击Spinner使用它时,相应的Button被禁用。我已将以下 OnFocusChangeListener 添加到 Spinner:
s.setFocusable(true);
s.setFocusableInTouchMode(true);
s.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
distanceButton.setEnabled(false);
} else {
distanceButton.setEnabled(true);
}
}
});
这有效,并禁用了按钮。但是,微调器现在需要单击两次才能显示选项,而在没有 OnFocusChangeListener 的情况下它只需要单击一次。有什么方法可以将两个操作合并为一个监听器吗?
谢谢...
尝试在 if 子句后调用 super.onFocusChange(v, hasFocus)。
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
distanceButton.setEnabled(false);
} else {
distanceButton.setEnabled(true);
}
super.onFocusChange(v, hasFocus);
}
我有一个微调器,可以与标准 OnItemSelectedListener 一起正常工作以呈现一组选项:
s.setAdapter(adapter);
s.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int selectedPosition, long arg3) {
if (selectedPosition == 0) {
// do stuff
} else {
// other stuff
}
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
但是,我有一个新的要求,当用户点击Spinner使用它时,相应的Button被禁用。我已将以下 OnFocusChangeListener 添加到 Spinner:
s.setFocusable(true);
s.setFocusableInTouchMode(true);
s.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
distanceButton.setEnabled(false);
} else {
distanceButton.setEnabled(true);
}
}
});
这有效,并禁用了按钮。但是,微调器现在需要单击两次才能显示选项,而在没有 OnFocusChangeListener 的情况下它只需要单击一次。有什么方法可以将两个操作合并为一个监听器吗?
谢谢...
尝试在 if 子句后调用 super.onFocusChange(v, hasFocus)。
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
distanceButton.setEnabled(false);
} else {
distanceButton.setEnabled(true);
}
super.onFocusChange(v, hasFocus);
}