【发布时间】:2016-08-29 15:08:13
【问题描述】:
我有设置文本、日期、时间的 DialogFragment。 当我显示此对话框时,已将注意力集中在 EditText 上。当我在 DatePicker 中设置日期时,将焦点移到 EditText 上。
我尝试向 EditText 添加参数,但没有帮助。无法输入文字。
android:focusable="false"
android:focusableInTouchMode="false"
在我找到一些解决方案后(如果按下“Enter” - 我禁用对 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();
}
【问题讨论】:
标签: java android android-edittext focus