как сделать календарь не кликабельным - PullRequest
0 голосов
/ 14 января 2020

Я хочу, чтобы в представлении календаря не было кликабельности, я пытался установить для кликабельного атрибута значение false, но это не сработало. и я добавил вид контейнера, затем установил атрибут clickable в false, но не работал в

    <CalendarView
            android:clickable="false"
            android:id="@+id/calendarView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

1 Ответ

0 голосов
/ 16 января 2020

Возвращая true из dispatchTouchEvent (MotionEvent ev), вы решите вашу проблему.

Используйте этот класс:

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.CalendarView;

public class CalenderView extends CalendarView {


    public CalenderView(Context context) {
        super(context);
    }

    public CalenderView(Context context, AttributeSet attribute) {
        super(context, attribute);
    }

    public CalenderView(Context context, AttributeSet attribute, int defStyle) {
        super(context, attribute, defStyle);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return true;
    }
}

Для Kotlin это будет:

 import android.content.Context
 import android.util.AttributeSet
 import android.view.MotionEvent
 import android.widget.CalendarView

 class CalendarView : CalendarView {
    constructor(context: Context?) : super(context!!) {}
    constructor(context: Context?, attribute: AttributeSet?) : super(context!!, attribute) 
    {}
    constructor(context: Context?, attribute: AttributeSet?, defStyle: Int) : 
    super(context!!, attribute, defStyle) {}

    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
        return true
    }
  }
...