我有两个使用TextInputLayout
的 View 。第一个是仅具有2个输入字段的登录 View ,第二个是具有许多输入字段的注册 View 。我正在使用带有自定义主题的TextInputLayout
和EditText
/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/