2017-02-26 10 views
6

Po prostu próbuję odsłuchać tekst w edytorze TextInputLayout. To działa, ale muszę dwukrotnie kliknąć EditText, aby wywołać, ale nie rozumiem, dlaczego. Tu jest mój kodu:EditText inside TextInputLayout onclick wymaga 2 kliknięć?! Android

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> 

Listenner:

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(); 
      } 
     }); 
    } 

Odpowiedz

13

Ustaw atrybut android:focusableInTouchMode do fałszywy, tak:

android:focusableInTouchMode="false" 

w swojej edittext kod xml.


Wyjaśnienie, jak z docs, android:focusableInTouchMode jest:

logiczna, która kontroluje, czy widok może skupić podczas gdy w dotyku trybie . Jeśli jest to prawdą dla widoku, ten widok może uzyskać fokus, gdy kliknął i może zachować ostrość, jeśli inny widok został kliknięty na tym , nie ma tego atrybutu ustawionego na true.

i EditText jest prawda domyślnie.

+0

Dziękujemy! to działało! –

+1

@ Rémi, proszę, przyjmij tę odpowiedź jako odpowiedź dla innych osób, które mogą zadać ci pytanie. –

+0

Jeśli będziesz długo klikać dane wejściowe, będziesz mógł wkleić ostatni skopiowany tekst, więc nie jest to pełne rozwiązanie. –

Powiązane problemy