onclick Edittext,弹出日期输入对话框片段
onclick Edittext, popup a date input dialog fragment
我创建了一个编辑文本来捕捉日期。在 edittext 的 setOnClickListener 上,我正在显示日期 doalog 框。我 select 此对话框上的日期和 selected 日期在编辑文本上设置。
一切正常,只是当我第一次单击编辑文本时 setOnClickListener 事件没有被触发。我需要再次单击编辑文本以显示对话框。
可能我需要为编辑文本设置一些 属性。
这是编辑文本
<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();
}
});
谁能指导一下。提前致谢。
首先,您必须创建一个名为 DatePicked
的 class 或任何您想要的名称,然后为 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。
而activity你想在其中弹出DatePickerDialog,你必须这样调用class-
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 中显示选定的日期。
试试这个..
添加这两件事..
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"/>
这是有原因的,它的发生是因为当我们第一次点击 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" />
将这两个附加属性添加到您的 edittext xml 并为其实现 onClick 事件
android:focusableInTouchMode="false"
android:focusable="false"
我创建了一个编辑文本来捕捉日期。在 edittext 的 setOnClickListener 上,我正在显示日期 doalog 框。我 select 此对话框上的日期和 selected 日期在编辑文本上设置。
一切正常,只是当我第一次单击编辑文本时 setOnClickListener 事件没有被触发。我需要再次单击编辑文本以显示对话框。
可能我需要为编辑文本设置一些 属性。 这是编辑文本
<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();
}
});
谁能指导一下。提前致谢。
首先,您必须创建一个名为 DatePicked
的 class 或任何您想要的名称,然后为 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。
而activity你想在其中弹出DatePickerDialog,你必须这样调用class-
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 中显示选定的日期。
试试这个.. 添加这两件事..
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"/>
这是有原因的,它的发生是因为当我们第一次点击 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" />
将这两个附加属性添加到您的 edittext xml 并为其实现 onClick 事件
android:focusableInTouchMode="false"
android:focusable="false"