onclick Edittext,弹出一个日期输入对话框片段

时间:2018-06-16 00:36:07

标签: android datepicker android-edittext dialog android-dialogfragment

我创建了一个编辑文本来捕捉日期。在edittext的setOnClickListener上,我显示了日期doalog框。我在此对话框中选择日期,并在编辑文本上设置所选日期。

当我第一次点击edittext时, setOnClickListener事件没有被触发,一切正常。我需要再次单击edittext以显示对话框。

可能需要为edittext设置一些属性。 这是edittext

<EditText
                        android:id="@+id/edtDOB"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:ems="10"
                        android:hint="@string/dateFormat"
                        android:inputType="date"
                        android:longClickable="false"
                        android:maxLength="10"
                        android:textAlignment="textStart"
                        android:textColor="@color/black"
                        android:textColorHint="@color/colorAccent"
                        android:textSize="@dimen/font_size" />

这是onclicklistener事件

dob.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                java.util.Calendar today = java.util.Calendar.getInstance();
                YY = today.get(java.util.Calendar.YEAR);
                MM = today.get(java.util.Calendar.MONTH);
                DD = today.get(java.util.Calendar.DAY_OF_MONTH);
                Log.e("current DD/MM/YY", DD+"/"+MM+"/"+YY);
                DatePickerDialog dialog = new DatePickerDialog(
                        PremiumCalculation.this,
                        android.R.style.Theme_Holo_Light_Dialog_MinWidth,
                        mDateSetListener,
                        YY, MM, DD);
                dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                dialog.show();
            }
        });

任何人都可以指导我。提前谢谢。

4 个答案:

答案 0 :(得分:0)

首先,您必须创建一个名为DatePicked的类或任何您想要的类,并为DataPikcerDaialog弹出窗口编写代码。

public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{

ImageButton btnDatePicker;
EditText txtDOB;

public DatePicker(View view, EditText txtDOB){
    btnDatePicker = (ImageButton) view;
    this.txtDOB = txtDOB;
}

public Dialog onCreateDialog(Bundle savedInstanceState){
    final Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    return new DatePickerDialog(getActivity(),this, year, month, day);
}
@Override
public void onDateSet(android.widget.DatePicker datePicker, int year, int month, int day) {
    String date = day + "/" + (month+1) + "/" + year;
    txtDOB.setText(date);
}
}

您可以使用EditText或TextView。如果您使用的是EditText,请确保禁用EditText。

要在哪个活动中弹出DatePickerDialog,你必须像这样调用这个类 -

final EditText txtDOB = (EditText) findViewById(R.id.txtDOB);   
txtDOB.setFocusable(false);      //Disable Your EditText
txtDOB.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DatePicker datePicker = new DatePicker(view, txtDOB);
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            datePicker.show(ft, "Date Picker");
        }
    });

这将打开DatePickerDialog并在EditText中显示所选日期。

答案 1 :(得分:0)

试试这个.. 添加这两件事..

 android:clickable="true"
 android:editable="false"

<EditText
   android:id="@+id/Birthday"
   custom:font="@string/font_avenir_book"
   android:clickable="true"
   android:editable="false"
  `enter code here` android:hint="@string/birthday"/>

答案 2 :(得分:0)

有一个原因,它正在发生,因为当我们第一次点击editText时,光标移动并且editText变得可聚焦。试试吧

android:clickable="false"
                android:cursorVisible="false"
                android:focusable="false"
                android:focusableInTouchMode="false"

作为

<EditText
                android:id="@+id/et_doc_date"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clickable="false"
                android:cursorVisible="false"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:hint="Document Date*"
                android:inputType="text"
                android:maxLength="40"
                android:digits="1234567890-/"
                android:paddingLeft="10dp"
                android:singleLine="true"
                android:textCursorDrawable="@null"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:textColor="@color/black_color" />

答案 3 :(得分:0)

将这两个附加属性添加到edittext xml并为其实现onClick事件

android:focusableInTouchMode="false"
android:focusable="false"