2017-06-13 3 views
0

Also im Grunde meine Idee ist eine Floating Label EditText mit einer Grenze um ihn zu erstellen. Der Fall ist, wenn der EditText nicht im Fokus ist, sollte der Hinweis vertikal in der Mitte erscheinen, aber wenn er fokussiert ist, wird er nach innen expandieren.TextInput Layout mit Begrenzung

Ich füge die Beispiele auch: Image

Die obere der fokussierte ist und die untere ist, ohne den Fokus.

Bitte helfen.

Bearbeiten Sie das Passwort Layout:

<RelativeLayout 
    android:id="@+id/relativePsw" 
    android:layout_width="match_parent" 
    android:layout_height="56dp" 
    android:background="@drawable/psw_et_boundary"> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/etPasswordLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:passwordToggleDrawable="@drawable/password_drawable" 
     app:passwordToggleEnabled="true"> 

     <android.support.design.widget.TextInputEditText 
      android:id="@+id/passwordEt" 
      style="@style/EditTextCustomHolo" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#0000" 
      android:hint="@string/password" 
      android:inputType="textPassword" 
      android:maxLines="1" /> 
    </android.support.design.widget.TextInputLayout> 
</RelativeLayout> 

Java:

Anfangs Einstellung padding:

mRelativePsw.setPadding(dpToPx(14), 0, dpToPx(14), 0); 
    mPasswordEt.setPadding(0, dpToPx(10), 0, 0); 

OnFocusChange:

mPasswordEt.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean focus) { 
      if (focus) { 
       mPasswordEt.setPadding(dpToPx(14), dpToPx((float) 6.3), dpToPx(14), 0); 
       mRelativePsw.setPadding(0, dpToPx(12), 0, 0); 
       Utils.showSoftKeyboard(LoginActivity.this, mPasswordEt); 
      } else { 
       if (mPasswordEt.getText().toString().trim().equalsIgnoreCase("")) { 
        mPasswordEt.setPadding(dpToPx(14), 0, dpToPx(14), 0); 
        mRelativePsw.setPadding(0, dpToPx(10), 0, 0); 
       } 
      } 
     } 
    }); 

Es ist ein langwieriger Prozess h andle jede einzelne von ihnen so. So wird Hilfe vorgeschlagen.

+0

einen Code Ihrer XML-Datei einfügen? Wenn du –

+0

hast, ist deine Idee sehr interessant. Was ist deine Frage? – lelloman

+0

Wie es geht .. Ich benutzte eine Methode, in der ich die Auffüllung dynamisch änderte, es funktioniert irgendwie, aber es ist sehr lang zu implementieren. Ich werde den Code auch anhängen. –

Antwort

0

Mein Vorschlag dafür ist, dass, fügen Sie Ihre border-Design-Zeichnungsdatei zu TextInputLayout als Hintergrund und stellen Sie einige Padding zu diesem ca. 8dp wird richtig sein. dann Hintergrund von TextInputEditText als

so Standardzeile von diesem bearbeiten Text wird verschwinden und wenn Sie auf diesen Text bearbeiten und wenn Sie etwas in das dann Label wird in diesem Rahmen.

versuchen Sie diesen Code ist es, was Sie wollen Label wird in der Mitte sein.

versuchen Sie es, es ist richtig, dass es schwebendes Etikett in der Mitte gibt.

<android.support.design.widget.TextInputLayout 
     android:id="@+id/input_layout_name" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:gravity="center"> 

     <EditText 
      android:id="@+id/input_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:gravity="center" 
      android:hint="Enter Name"/> 
    </android.support.design.widget.TextInputLayout> 
+0

Das ist die Sache .. das Etikett ist dann nicht in der Mitte. –

+0

versuchen Sie es, es ist richtig, dass es schwebendes Etikett in der Mitte gibt. –