|
@@ -0,0 +1,141 @@
|
|
|
|
+package org.telegram.cricdit.view;
|
|
|
|
+
|
|
|
|
+import android.app.Dialog;
|
|
|
|
+import android.content.Context;
|
|
|
|
+import android.content.res.Resources;
|
|
|
|
+import android.os.Build;
|
|
|
|
+import android.view.LayoutInflater;
|
|
|
|
+import android.view.View;
|
|
|
|
+import android.view.ViewGroup;
|
|
|
|
+import android.view.Window;
|
|
|
|
+import android.widget.DatePicker;
|
|
|
|
+import android.widget.LinearLayout;
|
|
|
|
+import android.widget.TextView;
|
|
|
|
+
|
|
|
|
+import org.telegram.messenger.R;
|
|
|
|
+
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
|
+import java.util.Calendar;
|
|
|
|
+
|
|
|
|
+public class CustomDateDialog implements View.OnClickListener, DatePicker.OnDateChangedListener {
|
|
|
|
+ private Dialog dialog;
|
|
|
|
+ private TextView titleTv;//标题
|
|
|
|
+ private DatePicker datePicker;//日期选择控件
|
|
|
|
+ private TextView confirmTv;//底部的“确认”
|
|
|
|
+ private View dialogView;
|
|
|
|
+ private OnDateSetListener onDateSetListener;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 构造器
|
|
|
|
+ * @param context 上下文
|
|
|
|
+ */
|
|
|
|
+ public CustomDateDialog(Context context){
|
|
|
|
+ dialogView = LayoutInflater.from(context).inflate(R.layout.date_dialog, null);
|
|
|
|
+ dialog=new Dialog(context,R.style.CustomDateDialog);
|
|
|
|
+ titleTv=dialogView.findViewById(R.id.titleTv);
|
|
|
|
+ datePicker=dialogView.findViewById(R.id.datePicker);
|
|
|
|
+// ViewGroup viewGroup1= (ViewGroup) datePicker.getChildAt(0);
|
|
|
|
+// ViewGroup viewGroup2= (ViewGroup) viewGroup1.getChildAt(0);//获取年月日的下拉列表项
|
|
|
|
+// if(viewGroup2.getChildCount()==3){//有的机型没有竖线,只有年、月、日
|
|
|
|
+// viewGroup2.getChildAt(2).setVisibility(View.GONE);
|
|
|
|
+// }else if(viewGroup2.getChildCount()==5){//有的机型有有竖线
|
|
|
|
+// viewGroup2.getChildAt(3).setVisibility(View.GONE);
|
|
|
|
+// viewGroup2.getChildAt(4).setVisibility(View.GONE);
|
|
|
|
+// }
|
|
|
|
+ confirmTv=dialogView.findViewById(R.id.confirmTv);
|
|
|
|
+ confirmTv.setOnClickListener(this);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 显示对话框
|
|
|
|
+ */
|
|
|
|
+ public void show(){
|
|
|
|
+ Window window = dialog.getWindow();
|
|
|
|
+ window.setContentView(dialogView);//设置对话框窗口的内容视图(这里有个坑,参数不要传R.layout.date_dialog,否则会出现各种问题,比如按钮响应不了点击事件)
|
|
|
|
+ window.setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);//设置对话框窗口的布局参数
|
|
|
|
+ dialog.show();
|
|
|
|
+ dialog.setCancelable(false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 关闭对话框
|
|
|
|
+ */
|
|
|
|
+ public void dismiss(){
|
|
|
|
+ if(dialog!=null&&dialog.isShowing()){
|
|
|
|
+ dialog.dismiss();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 设置标题
|
|
|
|
+ * @param title 标题
|
|
|
|
+ */
|
|
|
|
+ public void setTitle(String title){
|
|
|
|
+ titleTv.setText(title);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setDate(int year,int month,OnDateSetListener onDateSetListener){
|
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
|
+ hideDay(datePicker);
|
|
|
|
+ datePicker.init(year,month,calendar.get(Calendar.DAY_OF_MONTH),this);
|
|
|
|
+ this.onDateSetListener=onDateSetListener;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onClick(View v) {
|
|
|
|
+ if(v.getId()== R.id.confirmTv){
|
|
|
|
+ dialog.dismiss();
|
|
|
|
+ if(onDateSetListener!=null){
|
|
|
|
+ datePicker.clearFocus();
|
|
|
|
+ int year = datePicker.getYear();
|
|
|
|
+ int month = datePicker.getMonth();
|
|
|
|
+ int day = datePicker.getDayOfMonth();
|
|
|
|
+ onDateSetListener.onDateSet(year,month+1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
|
|
|
+ System.out.println("weqrweqrwer " + year + " : " + monthOfYear);
|
|
|
|
+ datePicker.init(year,monthOfYear,dayOfMonth,this);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public interface OnDateSetListener{
|
|
|
|
+ void onDateSet(int year,int month);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void hideDay(DatePicker mDatePicker) {
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ /* 处理android5.0以上的特殊情况 */
|
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
|
|
+ int daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android");
|
|
|
|
+ if (daySpinnerId != 0) {
|
|
|
|
+ View daySpinner = mDatePicker.findViewById(daySpinnerId);
|
|
|
|
+ if (daySpinner != null) {
|
|
|
|
+ daySpinner.setVisibility(View.GONE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ Field[] datePickerfFields = mDatePicker.getClass().getDeclaredFields();
|
|
|
|
+ for (Field datePickerField : datePickerfFields) {
|
|
|
|
+ if ("mDaySpinner".equals(datePickerField.getName()) || ("mDayPicker").equals(datePickerField.getName())) {
|
|
|
|
+ datePickerField.setAccessible(true);
|
|
|
|
+ Object dayPicker = new Object();
|
|
|
|
+ try {
|
|
|
|
+ dayPicker = datePickerField.get(mDatePicker);
|
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (IllegalArgumentException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ ((View) dayPicker).setVisibility(View.GONE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|