我有两个使用TextInputLayout的 View 。第一个是仅具有2个输入字段的登录 View ,第二个是具有许多输入字段的注册 View 。我正在使用带有自定义主题的TextInputLayoutEditText/AppCompatEditText作为输入。
问题是,当我在“注册”屏幕中单击EditText时,在默认TextInputLayout动画上会出现滞后/尖峰。我的LoginScreen没有滞后,但是我使用的代码是完全相同的,所以我想问题出在输入数量上。有什么想法或想法吗?
这是我的注册码:

<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>

和登录名:
<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" />

最佳答案

我认为出现延迟的原因是TextInputLayout的提示动画和对 Activity 主窗口的调整是同时发生的(因为显示了软键盘)。

在我的情况下,在Manifest的 Activity 标签内使用android:windowSoftInputMode="adjustNothing"可以完成此任务,因为它使键盘显示在内容上方,而无需对 Activity 的主窗口进行任何调整,但是您可以决定键盘是否可以覆盖TextInputLayout。

作为最后一个选项,我们可以将app:hintAnimationEnabled="false"设置为TextInputLayout。

关于android - TextInputLayout中的EditText滞后,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34992839/

10-11 07:32