2016-08-29 6 views
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(); 
} 

答えて

0

あなたのEditText(dialog_add_comment)に

android:editable="false" 

を追加してみてください。

+0

廃止予定です。 –

関連する問題