0
私はText、Date、Timeを設定するDialogFragmentを持っています。 このダイアログを表示すると、すでにEditTextにフォーカスしています。 DatePickerで日付を設定すると、EditTextにフォーカスが移動します。DatePickerまたはTimePickerを変更したときにEditTextでフォーカスをキャンセルするにはどうすればいいですか?
私はEditTextにパラメータを追加しようとしましたが、助けにはなりませんでした。テキストを入力することは不可能でした。
android:focusable="false"
android:focusableInTouchMode="false"
私はいくつかの解決策を見つけたら(押された "入力" 場合 - 私はのEditTextにフォーカスを無効にする):
editTextComment.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
editTextComment.setFocusable(false);
editTextComment.setFocusableInTouchMode(true);
return true;
} else {
return false;
}
}
});
は、あなたは私が右のそれを行う助けることができますか?ありがとう。
XML:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/dialog_add_comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_entrance_horizontal_margin"
android:hint="@string/dialog_reminder_add_hint_edit_text" />
<DatePicker
android:id="@+id/dialog_date_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<TimePicker
android:id="@+id/dialog_time_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
JAVA
public class AddReminderDialogFragment extends DialogFragment {
public static final String BROADCAST_ADD_NEW_REMINDER = "BROADCAST_ADD_NEW_REMINDER";
private String dialogTitle;
private String dialogNegativeBtnText;
private String dialogPositiveBtnText;
public static AddReminderDialogFragment newInstanse() {
return new AddReminderDialogFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dialogTitle = getResources().getString(R.string.add_reminder_dialog_title);
dialogNegativeBtnText = getResources().getString(R.string.add_reminder_dialog_negative_btn_text);
dialogPositiveBtnText = getResources().getString(R.string.add_reminder_dialog_positive_btn_text);
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.dialog_reminder_add, null);
final DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.dialog_date_picker);
final TimePicker timePicker = (TimePicker) dialogView.findViewById(R.id.dialog_time_picker);
final EditText editTextComment = (EditText) dialogView.findViewById(R.id.dialog_add_comment);
final Calendar reminderTime = Calendar.getInstance();
timePicker.setIs24HourView(true);
editTextComment.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
editTextComment.setFocusable(false);
editTextComment.setFocusableInTouchMode(true);
return true;
} else {
return false;
}
}
});
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker timePicker, int hour, int minutes) {
reminderTime.set(Calendar.HOUR_OF_DAY, hour);
reminderTime.set(Calendar.MINUTE, minutes);
}
});
return new AlertDialog.Builder(getContext())
.setTitle(dialogTitle)
.setView(dialogView)
.setIcon(App.getInstance().getResources().getDrawable(R.mipmap.ic_launcher))
.setNegativeButton(dialogNegativeBtnText, null)
.setPositiveButton(dialogPositiveBtnText, null)
.create();
}
廃止予定です。 –