自定义日器选择器Dialog控件

coding

allprojects {

repositories {

google()

jcenter()

//新添加的

maven { url 'https://jitpack.io' }

}

}

导入依赖

implementation 'com.github.prolificinteractive:material-calendarview:1.4.3'

xml文件中添加

<com.prolificinteractive.materialcalendarview.MaterialCalendarView xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/calendarView"android:layout_width="match_parent"android:layout_height="wrap_content"app:mcv_showOtherDates="defaults"app:mcv_selectionColor="#d862e2e4" />

运行就会出现基本的日历

下面来将日期做成dialog的形式 , 最终效果如下

新建 dialog_calendar_view.xml 布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="20dp">

<com.prolificinteractive.materialcalendarview.MaterialCalendarViewxmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/calendarView"android:layout_width="match_parent"android:layout_height="wrap_content"app:mcv_selectionColor="#d862e2e4"app:mcv_showOtherDates="defaults" />

<LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:layout_marginBottom="5dp"android:orientation="horizontal">

<Button android:id="@+id/btn_cancle"android:layout_width="0dp"android:layout_height="25dp"android:layout_marginRight="20dp"android:layout_weight="1"android:background="#00000000"android:text="取消"android:textSize="15sp" />

<Button android:id="@+id/btn_ok"android:layout_width="0dp"android:layout_height="25dp"android:layout_marginLeft="20dp"android:layout_weight="1"android:background="#00000000"android:text="确定"android:textSize="15sp" />

</LinearLayout>

</LinearLayout>

新建CalenerDialog Java类

package com.lanyu96.calendardialog.utils;

import android.app.Dialog;

import android.content.Context;

import android.os.Bundle;

import android.support.annotation.NonNull;

import android.text.TextUtils;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;

import com.lanyu96.calendardialog.R;

import com.prolificinteractive.materialcalendarview.CalendarDay;

import com.prolificinteractive.materialcalendarview.CalendarMode;

import com.prolificinteractive.materialcalendarview.MaterialCalendarView;

import com.prolificinteractive.materialcalendarview.OnDateSelectedListener;

import java.util.Calendar;

import java.util.Date;

publicclassCalenerDialogextendsDialog {

private OnSelectedListener listener;

private MaterialCalendarView calendarView;

private CalendarDay calendarDay = null;

private Button btn_ok;

private Button btn_cancle;

publicCalenerDialog(Context context) {

super(context);

}

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.dialog_calendar_view);

setCanceledOnTouchOutside(false);

btn_ok = findViewById(R.id.btn_ok);

btn_cancle = findViewById(R.id.btn_cancle);

calendarView = findViewById(R.id.calendarView);

calendarView.state().edit()

.setFirstDayOfWeek(Calendar.MONDAY)

.setCalendarDisplayMode(CalendarMode.MONTHS)

.commit();

//设置默认选中的日器

calendarView.setSelectedDate(new Date());

calendarView.setCurrentDate(new Date());

calendarDay = calendarView.getSelectedDate();

//设置点击监听

calendarView.setOnDateChangedListener(new OnDateSelectedListener() {

@Override

publicvoidonDateSelected(@NonNull MaterialCalendarView widget, @NonNull CalendarDay date, boolean selected) {

calendarDay = date;

Toast.makeText(getContext(), ""+date, Toast.LENGTH_SHORT).show();

}

});

btn_ok.setOnClickListener(new View.OnClickListener() {

@Override

publicvoidonClick(View view) {

if (listener != null) {

if (calendarDay != null) {

listener.getData(calendarDay);

} else {

listener.getData(calendarDay);

}

} else {

listener.getData(calendarDay);

}

dismiss();

}

});

btn_cancle.setOnClickListener(new View.OnClickListener() {

@Override

publicvoidonClick(View view) {

dismiss();

}

});

}

publicinterfaceOnSelectedListener {

void getData(CalendarDay data);

}

publicvoidsetOnSelectedListener(OnSelectedListener listener) {

this.listener = listener;

}

}

然后新建一个测试的Demo来 调用日期选择控件

布局为一个简单的按钮控件

java代码为: 

publicclassMainActivityextendsAppCompatActivity {

private Button calendarBtn;

@Override

protectedvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

calendarBtn = findViewById(R.id.act_calendar_btn);

calendarBtn.setOnClickListener(new View.OnClickListener() {

@Override

publicvoidonClick(View v) {

CalenerDialog calenerDialog = new CalenerDialog(MainActivity.this);

calenerDialog.setOnSelectedListener(new CalenerDialog.OnSelectedListener() {

@Override

publicvoidgetData(CalendarDay data) {

Toast.makeText(MainActivity.this, ""+data.getDay()+"日", Toast.LENGTH_SHORT).show();

}

});

calenerDialog.show();

}

});

}

}

以上是 自定义日器选择器Dialog控件 的全部内容, 来源链接: utcz.com/z/508918.html

回到顶部