如何为CalendarView设置OnClickListener?

时间:2012-10-08 12:27:19

标签: android

我一直在开发一些Android应用程序,并且有以下代码:

    final CalendarView calendarView=(CalendarView)layout.findViewById(R.id.calendarView);
    calendarView.setClickable(true);
    calendarView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.e("event", "click");
    });
    calendarView.setOnLongClickListener(new OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {
                Log.e("event", "long click");
                return false;
            }

    });
    calendarView.setOnDateChangeListener(new OnDateChangeListener(){

            @Override
            public void onSelectedDayChange(CalendarView view, int year,
                    int month, int dayOfMonth) {
                Log.e("event", "datachanged");
            }

    });

我需要捕获“OnClick”事件,但我只捕获“OnDataChange”事件。我不明白为什么。请帮我。先感谢您。

3 个答案:

答案 0 :(得分:0)

我猜测有一些'CalendarView'的子视图,你可以注册一个'OnClickListener'而不是'CalendarView'。

看看here并看到它扩展了'FrameLayout'。

答案 1 :(得分:0)

由于日历是对话框而不是查看使用 DialogInterface.OnClickListener而不是View.OnclickListener

答案 2 :(得分:0)

OnGlobalLayoutListener可以解决问题。

calendarView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
            @Override
            public void onGlobalLayout()
            {
                  //your code here
            }
        });