1. ホーム
  2. アンドロイド

[解決済み】Datepicker:editxtをクリックするとdatepickerがポップアップする方法

2022-03-26 08:09:16

質問

日付ピッカーのポップアップウィンドウを表示したいのですが、どうすればいいですか?いくつかの例を見つけましたが、うまくいきません。私は一つの編集テキストを持っていて、編集テキストをクリックすると、datepickerダイアログがポップアップし、日付を設定した後、編集テキストにdd/mm/yyyyフォーマットで日付を表示したいのですが、どうすればいいですか?サンプルコードまたは良いリンクを提供してください。

どのように解決するのですか?

XMLファイルで試してみてください。

<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 Fileで。

public class MainActivity extends AppCompatActivity {
    final Calendar myCalendar= Calendar.getInstance();
    EditText editText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText=(EditText) findViewById(R.id.BirthDate);
        DatePickerDialog.OnDateSetListener date =new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int day) {
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH,month);
                myCalendar.set(Calendar.DAY_OF_MONTH,day);
                updateLabel();
            }
        };
        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new DatePickerDialog(MainActivity.this,date,myCalendar.get(Calendar.YEAR),myCalendar.get(Calendar.MONTH),myCalendar.get(Calendar.DAY_OF_MONTH)).show();
            }
        });
    }

    private void updateLabel(){
        String myFormat="MM/dd/yy";
        SimpleDateFormat dateFormat=new SimpleDateFormat(myFormat, Locale.US);
        editText.setText(dateFormat.format(myCalendar.getTime()));
    }
}

追加 android:focusable="false" のxmlファイル内で EditText を使用して、ワンタッチでできるようにします。