2017-02-26 1 views
6

Ich versuche einfach einen onlick auf einen Text in einem TextInputLayout zu hören. Es funktioniert, aber ich muss zweimal auf den EditText klicken, damit es ausgelöst wird. Ich verstehe nicht warum. Hier ist mein Code:EditText in TextInputLayout onclick benötigt 2 Klick?! 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(); 
      } 
     }); 
    } 

Antwort

13

Setzen Sie das Attribut android:focusableInTouchMode zu falsch, wie folgt aus:

android:focusableInTouchMode="false" 

in Ihrem edittext XML-Code.


Erklärung, wie aus Dokumenten, android:focusableInTouchMode ist:

Boolean, der steuert, ob eine Ansicht Fokus, während in Kontakt Modus nehmen. Wenn dies für eine Ansicht zutrifft, kann diese Ansicht den Fokus erhalten, wenn angeklickt wird, und kann den Fokus beibehalten, wenn auf eine andere Ansicht geklickt wird, bei der dieses Attribut nicht auf true festgelegt ist.

und die EditText ist wahr standardmäßig.

+0

Vielen Dank! das hat funktioniert! –

+1

@ Rémi du bist willkommen, bitte in Betracht ziehen, es als Antwort für andere Leute zu akzeptieren, die durch Sie Frage kommen können. –

+0

Wenn Sie lange auf die Eingabe klicken, können Sie den letzten kopierten Text einfügen. Dies ist keine vollständige Lösung. –

Verwandte Themen