3

私はいくつかの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」イベントのみをキャッチします。理由がわかりません。私を助けてください。前もって感謝します。

4

3 に答える 3

0

カレンダーは表示されないダイアログであるため、View.OnclickListenerではなくDialogInterface.OnClickListenerを使用します

于 2012-10-08T12:42:43.753 に答える
0

「CalendarView」にはいくつかのサブビューがあると思いますが、「CalendarView」ではなく「OnClickListener」を登録できるのはこれらのサブビューです。

ここを見て、それが「FrameLayout」を拡張していることを確認してください。

于 2012-10-08T12:35:43.543 に答える
0

OnGlobalLayoutListenerがそのトリックを実行します。

calendarView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){
            @Override
            public void onGlobalLayout()
            {
                  //your code here
            }
        });
于 2015-08-06T16:37:21.487 に答える