对不起我的英语不好但是我的意大利语。我有一个微调器,我希望当它被禁用时,一个吐司显示。但我不能让它发挥作用!我正在使用另一个onTouchListener并且它运行良好,但是这个监听器不起作用。
这是我的代码:
private void buildSpinnerOrdinata(String element) {
spinnerOrdinata=null;
spinnerOrdinataArray=new ArrayList<String>();
spinnerOrdinataArrayAdapter=null;
try {
if(element.equals(""))
spinnerOrdinataArray.add("Seleziona un'ordinata");
else
spinnerOrdinataArray=databaseHelper.getOrdinataCpmAnalysis(element);
spinnerOrdinata = (Spinner) findViewById(R.id.spinnerOrdinata);
if(addingRecord==true){
spinnerOrdinataArray.add(0, "Seleziona un'ordinata");
}
spinnerOrdinataArrayAdapter = new ArrayAdapter<String>(this, R.layout.spinner, spinnerOrdinataArray);
spinnerOrdinataArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerOrdinata.setAdapter(spinnerOrdinataArrayAdapter);
if(addingRecord==true){
spinnerOrdinata.setOnTouchListener(null);
spinnerOrdinata.setOnTouchListener(SpinnerOrdinataOnTouch);
}
if(tabellaGiaScelta==false&&addingRecord==true){
spinnerOrdinata.setOnTouchListener(null);
spinnerOrdinata.setEnabled(false);
spinnerOrdinata.setOnTouchListener(disabledSpinnerOnTouch);
}
else{
spinnerOrdinata.setEnabled(true);
spinnerOrdinata.setOnTouchListener(null);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是我的倾听者:
private View.OnTouchListener disabledSpinnerOnTouch=new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
Toast.makeText(getApplicationContext(), "Non è possibile selezionare questo campo, è disabilitato", Toast.LENGTH_SHORT).show();
Spinner spinnerOr=(Spinner)findViewById(R.id.spinnerOrdinata);
spinnerOr.performClick();
}
return true;
}
};
哪里出错?谢谢!
答案 0 :(得分:3)
因为您通过调用setEnabled(false)禁用了微调器。之后,它不会听取触摸事件。
我会扩展Spinner类并使用一个方法来创建我自己的实现,这个方法可能是重写的PeformClick方法,如果你想显示Spinner项目,你可以调用父版本,或者你不会调用父版本而是调用你的吐司告诉用户它已被禁用
这是如何做到的。
public class CustomSpinner extends Spinner{
private boolean mEnabled;
private final Toast mDisabledToast;
public CustomSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
mDisabledToast = Toast.makeText(context, "Non è possibile selezionare questo campo, è disabilitato", Toast.LENGTH_SHORT);
}
@Override
public boolean performClick() {
if(mEnabled)
return super.performClick();
else {
mDisabledToast.show();
return true;
}
}
@Override
public void setEnabled(boolean enabled){
mEnabled = enabled;
}
}
不要忘记在布局xml而不是基本Spinner类中使用新创建的CustomSpinner类。你可以这样做:
<com.example.CustomSpinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />