|
@@ -10,9 +10,16 @@ import android.view.ViewGroup;
|
|
|
import android.view.Window;
|
|
|
import android.widget.DatePicker;
|
|
|
import android.widget.LinearLayout;
|
|
|
+import android.widget.NumberPicker;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
+import androidx.constraintlayout.widget.ConstraintLayout;
|
|
|
+
|
|
|
+import org.telegram.cricdit.utils.DensityUtil;
|
|
|
+import org.telegram.cricdit.utils.DialogUtils;
|
|
|
import org.telegram.messenger.R;
|
|
|
+import org.telegram.onecric.utils.DialogUtil;
|
|
|
+import org.telegram.ui.Components.LayoutHelper;
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.util.Calendar;
|
|
@@ -22,18 +29,32 @@ public class CustomDateDialog implements View.OnClickListener, DatePicker.OnDate
|
|
|
private TextView titleTv;//标题
|
|
|
private DatePicker datePicker;//日期选择控件
|
|
|
private TextView confirmTv;//底部的“确认”
|
|
|
+ private TextView cancelTv;//底部的“取消”
|
|
|
private View dialogView;
|
|
|
private OnDateSetListener onDateSetListener;
|
|
|
+ String months[] = {"1", "2", "3", "4", "5", "6",
|
|
|
+ "7", "8", "9", "10", "11", "12"};
|
|
|
|
|
|
/**
|
|
|
* 构造器
|
|
|
+ *
|
|
|
* @param context 上下文
|
|
|
*/
|
|
|
- public CustomDateDialog(Context 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);
|
|
|
+// dialog=new Dialog(context,R.style.CustomDateDialog);
|
|
|
+
|
|
|
+ dialog = DialogUtils.initDialog(context);
|
|
|
+
|
|
|
+// LinearLayout.LayoutParams layoutParams = LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT);
|
|
|
+
|
|
|
+ ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT);
|
|
|
+
|
|
|
+ dialog.setContentView(dialogView, layoutParams);
|
|
|
+
|
|
|
+
|
|
|
+ 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){//有的机型没有竖线,只有年、月、日
|
|
@@ -42,17 +63,22 @@ public class CustomDateDialog implements View.OnClickListener, DatePicker.OnDate
|
|
|
// viewGroup2.getChildAt(3).setVisibility(View.GONE);
|
|
|
// viewGroup2.getChildAt(4).setVisibility(View.GONE);
|
|
|
// }
|
|
|
- confirmTv=dialogView.findViewById(R.id.confirmTv);
|
|
|
+ confirmTv = dialogView.findViewById(R.id.confirmTv);
|
|
|
+ cancelTv = dialogView.findViewById(R.id.cancelTv);
|
|
|
confirmTv.setOnClickListener(this);
|
|
|
+ cancelTv.setOnClickListener(this);
|
|
|
+
|
|
|
+// Dialog dialog = DialogUtils.initDialog(context);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 显示对话框
|
|
|
*/
|
|
|
- public void show(){
|
|
|
- Window window = dialog.getWindow();
|
|
|
- window.setContentView(dialogView);//设置对话框窗口的内容视图(这里有个坑,参数不要传R.layout.date_dialog,否则会出现各种问题,比如按钮响应不了点击事件)
|
|
|
- window.setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);//设置对话框窗口的布局参数
|
|
|
+ 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);
|
|
|
}
|
|
@@ -60,49 +86,52 @@ public class CustomDateDialog implements View.OnClickListener, DatePicker.OnDate
|
|
|
/**
|
|
|
* 关闭对话框
|
|
|
*/
|
|
|
- public void dismiss(){
|
|
|
- if(dialog!=null&&dialog.isShowing()){
|
|
|
+ public void dismiss() {
|
|
|
+ if (dialog != null && dialog.isShowing()) {
|
|
|
dialog.dismiss();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设置标题
|
|
|
+ *
|
|
|
* @param title 标题
|
|
|
*/
|
|
|
- public void setTitle(String title){
|
|
|
+ public void setTitle(String title) {
|
|
|
titleTv.setText(title);
|
|
|
}
|
|
|
|
|
|
- public void setDate(int year,int month,OnDateSetListener onDateSetListener){
|
|
|
+ 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;
|
|
|
+ datePicker.init(year, month, calendar.get(Calendar.DAY_OF_MONTH), this);
|
|
|
+// ((NumberPicker) ((ViewGroup) ((ViewGroup) datePicker.getChildAt(0)).getChildAt(0)).getChildAt(0)).setDisplayedValues(months);
|
|
|
+ this.onDateSetListener = onDateSetListener;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
- if(v.getId()== R.id.confirmTv){
|
|
|
+ if (v.getId() == R.id.confirmTv) {
|
|
|
dialog.dismiss();
|
|
|
- if(onDateSetListener!=null){
|
|
|
+ if (onDateSetListener != null) {
|
|
|
datePicker.clearFocus();
|
|
|
int year = datePicker.getYear();
|
|
|
int month = datePicker.getMonth();
|
|
|
int day = datePicker.getDayOfMonth();
|
|
|
- onDateSetListener.onDateSet(year,month+1);
|
|
|
+ onDateSetListener.onDateSet(year, month + 1);
|
|
|
}
|
|
|
+ } else if (v.getId() == R.id.cancelTv) {
|
|
|
+ dialog.dismiss();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
|
|
|
- System.out.println("weqrweqrwer " + year + " : " + monthOfYear);
|
|
|
- datePicker.init(year,monthOfYear,dayOfMonth,this);
|
|
|
+ datePicker.init(year, monthOfYear, dayOfMonth, this);
|
|
|
}
|
|
|
|
|
|
- public interface OnDateSetListener{
|
|
|
- void onDateSet(int year,int month);
|
|
|
+ public interface OnDateSetListener {
|
|
|
+ void onDateSet(int year, int month);
|
|
|
}
|
|
|
|
|
|
private void hideDay(DatePicker mDatePicker) {
|