首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Datepicker:单击edittext时如何弹出datepicker

Datepicker:单击edittext时如何弹出datepicker
EN

Stack Overflow用户
提问于 2013-02-18 17:45:22
回答 25查看 481.6K关注 0票数 325

我想显示datepicker弹出窗口。我已经找到了一些例子,但我没有正确地理解它。我有一个edittext,我希望当我点击edittext时,应该弹出日期选择器对话框,在设置日期后,日期应该以dd/mm/yyyy格式显示在edittext中。PLease为我提供示例代码或良好的链接。

EN

回答 25

Stack Overflow用户

回答已采纳

发布于 2013-02-18 17:54:34

在XML文件中尝试执行以下操作:

代码语言:javascript
复制
<EditText
   android:id="@+id/Birthday"
   custom:font="@string/font_avenir_book"
   android:clickable="false" 
   android:cursorVisible="false" 
   android:focusable="false" 
   android:focusableInTouchMode="false"
   android:hint="@string/birthday"/>

现在在Java文件中:

代码语言:javascript
复制
final Calendar myCalendar = Calendar.getInstance();

EditText edittext= (EditText) findViewById(R.id.Birthday);
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        myCalendar.set(Calendar.YEAR, year);
        myCalendar.set(Calendar.MONTH, monthOfYear);
        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        updateLabel();
    }

};

edittext.setOnClickListener(new OnClickListener() {
        
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        new DatePickerDialog(classname.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});

现在添加上述活动中的方法。

代码语言:javascript
复制
private void updateLabel() {
    String myFormat = "MM/dd/yy"; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    
    edittext.setText(sdf.format(myCalendar.getTime()));
}

在EditText的xml文件中添加android:focusable="false"以允许单次触摸。

票数 787
EN

Stack Overflow用户

发布于 2013-11-11 10:35:50

我不能让其中的任何一个工作,所以我会添加我的一个,以防万一。

代码语言:javascript
复制
public class MyEditTextDatePicker  implements OnClickListener, OnDateSetListener {   
EditText _editText;
private int _day;
private int _month;
private int _birthYear;
private Context _context;

public MyEditTextDatePicker(Context context, int editTextViewID)
{       
    Activity act = (Activity)context;
    this._editText = (EditText)act.findViewById(editTextViewID);
    this._editText.setOnClickListener(this);
    this._context = context;
}

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    _birthYear = year;
    _month = monthOfYear;
    _day = dayOfMonth;
    updateDisplay();
}
@Override
public void onClick(View v) {
    Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

    DatePickerDialog dialog = new DatePickerDialog(_context, this,
            calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
            calendar.get(Calendar.DAY_OF_MONTH));
    dialog.show();

}

// updates the date in the birth date EditText
private void updateDisplay() {

    _editText.setText(new StringBuilder()
    // Month is 0 based so add 1
    .append(_day).append("/").append(_month + 1).append("/").append(_birthYear).append(" "));
}
}

还有一些在其他文章中没有提到的东西。确保将以下内容放入EditText xml。

代码语言:javascript
复制
android:focusable="false"

否则,就像我的例子一样,键盘会一直弹出来。希望这能帮助到某人

票数 99
EN

Stack Overflow用户

发布于 2013-02-18 17:53:42

代码语言:javascript
复制
class MyClass implements OnClickListener, OnDateSetListener {   
   EditText editText;
   this.editText = (EditText) findViewById(R.id.editText);
   this.editText.setOnClickListener(this);
   @Override
   public void onClick(View v) {

       DatePickerDialog dialog = new DatePickerDialog(this, this, 2013, 2, 18);
       dialog.show();
   }
   @Override
   public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
       // this.editText.setText();
   }
}
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14933330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档