Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EditText in TextInputLayout lagging

I have two views using TextInputLayout. The first one is a login view which has only 2 input fields and the second one is a register view which has many input fields. I am using TextInputLayout and EditText/AppCompatEditText with custom themes for my inputs.
The problem is, when i click on my EditText's in my Register screen i get a kind of lag/spikes on the default TextInputLayout animation. I don't get the lag in my LoginScreen but the code I'm using is quite the same, so i suppose the problem is in the number of inputs. Any idea or thoughts?
Here is my register code:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activities.MainActivity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    app:title="Register as shipper"
    app:titleTextColor="@color/white" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="@dimen/space">

        <View
            android:layout_width="0px"
            android:layout_height="0px"
            android:focusable="true"
            android:focusableInTouchMode="true" />

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/hintTextOnLightBackgrounds"
            app:hintTextAppearance="@style/TextLabel">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/fullNameEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:hint="@string/shipper_register_full_name"
                android:inputType="text"
                android:nextFocusLeft="@id/fullNameEdit"
                android:nextFocusUp="@id/fullNameEdit"
                android:theme="@style/EditText" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout

            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/hintTextOnLightBackgrounds"
            app:hintTextAppearance="@style/TextLabel">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/companyNameEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:hint="@string/shipper_register_company_name"
                android:theme="@style/EditText" />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/hintTextOnLightBackgrounds"
            app:hintTextAppearance="@style/TextLabel">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/phoneNumberEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:hint="@string/shipper_register_phone_number"
                android:theme="@style/EditText"
                android:inputType="phone" />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/hintTextOnLightBackgrounds"
            app:hintTextAppearance="@style/TextLabel">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/emailEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:hint="@string/shipper_register_email"
                android:theme="@style/EditText"
                android:inputType="textEmailAddress" />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/hintTextOnLightBackgrounds"
            app:hintTextAppearance="@style/TextLabel">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/passwordEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:hint="@string/shipper_register_password"
                android:theme="@style/EditText"
                android:inputType="textPassword" />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/hintTextOnLightBackgrounds"
            app:hintTextAppearance="@style/TextLabel">

            <android.support.v7.widget.AppCompatEditText
                android:id="@+id/addressEdit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:hint="@string/shipper_register_address"
                android:theme="@style/EditText"
                android:inputType="text" />

        </android.support.design.widget.TextInputLayout>

        <android.support.v7.widget.AppCompatSpinner
            android:id="@+id/typeSpinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp" />

        <Button
            android:id="@+id/registerBtn"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="@dimen/space"
            android:text="@string/shipper_register_register"
            android:theme="@style/ButtonPrimary" />

    </LinearLayout>
</ScrollView>

and the login:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/space">

<ImageView
    android:layout_width="wrap_content"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    android:src="@drawable/logo_color"
    android:layout_height="wrap_content" />

<View
    android:layout_width="0px"
    android:layout_height="0px"
    android:focusable="true"
    android:focusableInTouchMode="true" />

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/hintTextOnLightBackgrounds"
    app:hintTextAppearance="@style/TextLabel">

    <android.support.v7.widget.AppCompatEditText
        android:id="@+id/emailEdit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/login_email"
        android:inputType="textEmailAddress"
        android:theme="@style/EditText" />
</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/hintTextOnLightBackgrounds"
    app:hintTextAppearance="@style/TextLabel">

    <android.support.v7.widget.AppCompatEditText
        android:id="@+id/passwordEdit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:hint="@string/login_password"
        android:inputType="textPassword"
        android:theme="@style/EditText" />
</android.support.design.widget.TextInputLayout>

<Button
    android:id="@+id/loginBtn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/login_login"
    android:theme="@style/ButtonPrimary" />

<Button
    android:id="@+id/shipperRegisterBtn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/login_register_as_shipper"
    android:theme="@style/ButtonPrimary" />

<Button
    android:id="@+id/carrierRegisterBtn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/login_register_as_carrier"
    android:theme="@style/ButtonPrimary" />

like image 676
Drilon Blakqori Avatar asked Jan 25 '16 12:01

Drilon Blakqori


People also ask

How to display floating label in edittext using textinputlayout?

TextInputLayout is a new element introduced in Design Support library to display the floating label in EditText. To display floating label in EditText, TextInputLayout needs to wrapped the EditText.

What does the textinputlayout show when you edit a text?

The TextInputLayout will show a custom icon specified by the user. Constant Value: -1 (0xffffffff) The TextInputLayout will show a dropdown button if the EditText is an AutoCompleteTextView and a Widget.MaterialComponents.TextInputLayout.

Why use textinputedittext instead of edittext?

The TextInputEditText class is provided to be used as the input text child of this layout. Using TextInputEditText instead of an EditText provides accessibility support for the text field and allows TextInputLayout greater control over the visual aspects of the text field.

What is the use of textinputedittext in autocompletetextview?

on the AutoCompleteTextView . The TextInputEditText class is provided to be used as the input text child of this layout. Using TextInputEditText instead of an EditText provides accessibility support for the text field and allows TextInputLayout greater control over the visual aspects of the text field.


1 Answers

I believe that the reason for the lag is that the hint animation of TextInputLayout and the adjustment made to the activity's main window happening at the same time (because of showing soft keyboard).

In my case using android:windowSoftInputMode="adjustNothing" inside the activity tag in Manifest does the job, because it makes keyboard appear over the content without any adjustment made to the activity's main window, however it is up to you to decide if keyboard can overlay your TextInputLayout.

As the last option we can set app:hintAnimationEnabled="false" to the TextInputLayout.

like image 70
Levon Petrosyan Avatar answered Oct 19 '22 21:10

Levon Petrosyan