Tôi đã đọc xung quanh về các câu hỏi về cách đặt đối tượng cần tập trung tuy nhiên dường như tôi không tìm được câu trả lời cho những gì tôi đang cố gắng làm.cách tập trung chỉnh sửa văn bản
Sử dụng On Focus Listener Tôi đã làm như sau:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (Ehour.getText().length()<=0) {
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
Calendar nohour = Calendar.getInstance();
Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
Ehour.setFocusable(true);
Ehour.requestFocus();
}
}
}});
Tôi đã thử những gợi ý từ bài viết sau:
Tôi đọc bài này nhưng sử dụng các đề xuất này cũng không có vẻ công việc: How to set focus on a view when a layout is created and displayed?
Mục tiêu của tôi là khi tiêu điểm văn bản chỉnh sửa bị mất, tôi cần phải quay lại nếu mục nhập không hợp lệ.
Hơn nữa theo các gợi ý được đưa ra bởi Bill Mote Tôi cũng đã cố gắng:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (Ehour.getText().length()<=0) {
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
Calendar nohour = Calendar.getInstance();
Ehour.setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
((EditText)arg0).requestFocus();
}
}
}});
** EDIT ** Tôi thậm chí thêm vào dòng dưới đây trước khi requestFocus():
((EditText)arg0).setFocusable(true);
*** CHỈNH SỬA ****
Đã thử từ bài đăng này: Stop EditText from gaining focus at Activity startup
Những thay đổi sau đây: Trong bố trí tại tiêu đề bố trí đầu tiên tôi nói thêm:
android:id="@+id/enterdata"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
Sau đó, trong OnChangeFocusListener Tôi đã làm điều này:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (((EditText)arg0).getText().length()<=0) {
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
Calendar nohour = Calendar.getInstance();
((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
findViewById(R.id.enterdata).requestFocus();
((EditText)arg0).setFocusable(true);
((EditText)arg0).setFocusableInTouchMode(true);
((EditText)arg0).requestFocus();
}
}
}});
Tuy nhiên tôi vẫn nhận được hành vi tương tự như trước, văn bản chỉnh sửa mà trọng tâm đi đến phần còn lại theo cách đó nhưng văn bản chỉnh sửa mà tôi muốn trọng tâm chuyển sang trông tập trung nhưng dường như nó không thể được sử dụng như thể nó vẫn đang chờ để được tập trung.
*** EDIT ****
Mã dưới đây theo bài gần đây cho thấy trên stackoverflow nơi người dùng hỏi những câu hỏi đang gặp vấn đề tương tự như tôi:
Ehour.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean arg1) {
// TODO Auto-generated method stub
if (!arg1) {
if (((EditText)arg0).getText().length()<=0) {
Calendar nohour = Calendar.getInstance();
((EditText)arg0).setText(numberformatter(nohour.get(Calendar.HOUR_OF_DAY)));
if (((EditText)arg0).requestFocus()) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
Emin.clearFocus();
Toast.makeText(getApplicationContext(), "No Hour Entered", Toast.LENGTH_LONG).show();
}
}
}
}});
Nhìn vào bài đăng này: http: // stackoverflow.com/questions/1555109/stop-edittext-from-gain-focus-at-activity-startup Tôi đã thử trên các câu trả lời mà tôi sẽ thêm vào câu hỏi của mình – TimCS
Tôi thậm chí đã cố gắng mã hóa cứng tất cả các hộp văn bản chỉnh sửa để xóa tập trung và đặt setFocusable và setFocusableInTouchMode thành false nhưng hành vi vẫn giống như văn bản chỉnh sửa mà tôi muốn tiêu điểm được tập trung nhưng mọi thao tác nhập sẽ kết thúc trong văn bản chỉnh sửa mà người dùng sẽ chuyển sang !!!!! CỨU GIÚP!!!! – TimCS
Nó xuất hiện trong bài đăng này: http: //stackoverflow.com/questions/14327412/set-focus-on-edittext? Rq = 1 người dùng có cùng một vấn đề và có vẻ như nó không được giải quyết, tuy nhiên tôi sẽ để thử các gợi ý ở đây để xem họ có làm việc cho tôi không? – TimCS