防止微调器下拉显示

时间:2012-08-21 20:04:15

标签: android android-spinner

我正在使用一个动态填充适配器的微调器。

  • 当有多个项目时,微调器行为是标准行为。点击后,会显示下拉列表,允许用户选择项目
  • 当只有一个项目时,我想阻止下拉列表出现并捕获click事件以执行操作。

我找不到阻止默认行为的解决方案(即在点击时只显示一个项目的下拉列表)。关于如何做到这一点的任何想法? 感谢

3 个答案:

答案 0 :(得分:9)

hm ...如果setClickable(fasle)中只有一项,请尝试使用setEnabled(false)spinner

试试这个

public class SpinnerActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Spinner spinner = (Spinner) findViewById(R.id.spinner1);
        List<String> list = new ArrayList<String>();
        list.add("list 1");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(dataAdapter);

        if (list.size() < 2) {
            spinner.setClickable(false);
            spinner.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_UP) {
                        Toast.makeText(SpinnerActivity.this, "Catch it!", Toast.LENGTH_SHORT).show();
                    }
                    return true;
                }
            });
        }


    }
}

答案 1 :(得分:3)

为了防止微调器显示下拉列表,我只在onTouch(...)中返回true,如下所示:

    spinner.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            return true;
        }
    });

答案 2 :(得分:0)

我在科特林做到了

const newVar=[...arr]
newVar.splice(Index,1);
console.log(newVar);