TextInputLayout内の編集テキストでonlickをリッスンさせようとしています。それは動作しますが、それをトリガーするためにEditTextを2回クリックする必要があります。理由はわかりません。ここに私のコードがあります:
xml:
<Android.support.design.widget.TextInputLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp">
<EditText
Android:id="@+id/start_date"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:ems="10"
Android:hint="Starting Date*: "
Android:inputType="textPersonName" />
</Android.support.design.widget.TextInputLayout>
聞き手:
private void setListenners() {
EditText startDate = (EditText) mView.findViewById(R.id.start_date);
startDate.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
Calendar mcurrentDate=Calendar.getInstance();
int mYear = mcurrentDate.get(Calendar.YEAR);
int mMonth = mcurrentDate.get(Calendar.MONTH);
int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);
DatePickerDialog mDatePicker=new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
Log.d("DEBUG", "year: " + year + " month: " + month + " day: " + day);
}
},mYear, mMonth, mDay);
mDatePicker.show();
}
});
}
属性を設定しますAndroid:focusableInTouchMode
tofalse
Android:focusableInTouchMode="false"
edittext
xmlコードで。
説明、ドキュメントから Android:focusableInTouchMode
は:
ビューがタッチモードのときにフォーカスを取得できるかどうかを制御するブール値。これがビューに当てはまる場合、そのビューはクリックされたときにフォーカスを取得し、この属性がtrueに設定されていない別のビューがクリックされてもフォーカスを保持できます。
EditText
はデフォルトでtrueです。
つまり、最初のクリックでedittext
がフォーカスを獲得し、2回目のクリックでClickListener
がトリガーされます。したがって、タッチに焦点を合わせるのを無効にする必要があります。