13

Tôi sử dụng cơ chế giao diện người dùng TextInputLayout trong trang đăng nhập của ứng dụng, mọi thứ hoạt động tốt ngoại trừ thiết bị chạy phiên bản Android 4.4.2 trên thiết bị này. ngoại lệ.Lỗi khi tăng lớp EditText khi tạo TextInputLayout trên Android 4.4.2:

Đây là cách bố trí của tôi:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

<include android:id="@+id/loginInfiLogoRL" 
    layout="@layout/login_infi_logo_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingLeft="-3dp" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="10dp"/> 

<!--EMAIL--> 
<android.support.design.widget.TextInputLayout 
    android:id="@+id/email_wrapper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/loginInfiLogoRL" 
    android:theme="@style/TextLabel"> 

    <EditText 
     android:id="@+id/etUserName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/login_screen_email_hint" 
     android:imeOptions="actionNext" 
     android:inputType="textEmailAddress" 
     android:maxLines="1" 
     android:nextFocusDown="@+id/etPassword" 
     android:singleLine="true" 
     android:textColor="@android:color/white" 
     android:textColorHighlight="@color/Orange" 
     android:textColorHint="@android:color/white" /> 

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


<RelativeLayout 
    android:id="@+id/rlPassword" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="12dp" 
    android:layout_below="@id/email_wrapper"> 

    <!--PASSWORD--> 
    <android.support.design.widget.TextInputLayout 
     android:id="@+id/password_wrapper" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/TextLabel"> 

     <EditText 
      android:id="@+id/etPassword" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/login_screen_password_hint" 
      android:imeOptions="actionNext" 
      android:inputType="textPassword" 
      android:maxLines="1" 
      android:nextFocusDown="@+id/bSignIn" 
      android:shadowColor="@color/Orange" 
      android:singleLine="true" 
      android:textColor="@android:color/white" 
      android:textColorHint="@android:color/white" /> 

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

    <!--FORGOT--> 
    <TextView 
     android:id="@+id/tvForgotPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_centerInParent="true" 
     android:paddingBottom="14dp" 
     android:paddingRight="10dp" 
     android:text="@string/login_screen_forgot_password_text" 
     android:textColor="@color/Orange" 
     android:textSize="16sp" /> 

</RelativeLayout> 

<TextView 
    android:id="@+id/tvRememberMe" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:visibility="invisible" /> 


<!--Buttons Login and SignUp--> 
<LinearLayout 
    android:id="@+id/llSignUp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="15dp" 
    android:layout_marginRight="15dp" 
    android:layout_marginTop="10dp" 
    android:gravity="center_vertical" 
    android:layout_below="@+id/rlPassword"> 

    <!--Sign up Button--> 
    <TextView 
     android:id="@+id/bSignUp" 
     android:layout_width="0dp" 
     android:layout_height="40dp" 
     android:layout_marginRight="16dp" 
     android:layout_weight="1" 
     android:textSize="18sp" 
     android:gravity="center" 
     android:imeOptions="actionGo" 
     android:text="@string/login_screen_sign_up_button_text" 
     android:textColor="@color/Orange" /> 

    <!--Login Button--> 
    <Button 
     android:id="@+id/bSignIn" 
     android:layout_width="0dp" 
     android:layout_height="40dp" 
     android:layout_marginLeft="16dp" 
     android:layout_weight="1" 
     android:background="@drawable/fragment_first_use_cloud_get_started_button_background" 
     android:focusable="true" 
     android:imeOptions="actionGo" 
     android:text="@string/login_screen_sign_in_button_text" 
     android:textColor="@color/Orange" /> 

</LinearLayout> 

<LinearLayout 
    android:id="@+id/llFacebook" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="15dp" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/llSignUp" 
    android:gravity="right"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:layout_marginRight="8dp" 
     android:gravity="center" 
     android:text="@string/log_in_with_facebook" 
     android:textAppearance="@style/TextAppearance.AppCompat.Small.Inverse" 
     android:textColor="@android:color/white" /> 

    <com.facebook.login.widget.LoginButton 
     android:id="@+id/bFacebookLogin" 
     android:layout_width="@dimen/circular_images_size_l" 
     android:layout_height="@dimen/circular_images_size_l" 
     android:background="@drawable/btnfbconnect" 
     android:text="" 
     android:textColor="@android:color/white"/> 

</LinearLayout> 


<!--Privacy--> 
<ImageView 
    android:id="@+id/ivLockImage" 
    android:layout_width="@dimen/circular_images_size_l" 
    android:layout_height="@dimen/circular_images_size_l" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@id/llFacebook" 
    android:layout_marginTop="18dp" 
    android:src="@drawable/iconshieldprivacy" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignEnd="@+id/llSignUp" 
    android:layout_alignParentRight="@+id/ivLockImage" 
    android:layout_alignRight="@+id/llSignUp" 
    android:layout_alignTop="@+id/ivLockImage" 
    android:layout_toRightOf="@+id/ivLockImage" 
    android:text="@string/login_screen_infi_privacy_title" 
    android:textColor="@android:color/white" 
    android:textSize="12sp" 
    android:textStyle="bold" /> 

<TextView 
    android:id="@+id/text1" 
    android:layout_width="241dp" 
    android:layout_height="wrap_content" 
    android:layout_alignEnd="@+id/textView2" 
    android:layout_alignRight="@+id/textView2" 
    android:layout_below="@+id/textView2" 
    android:layout_toRightOf="@+id/ivLockImage" 
    android:paddingTop="3dp" 
    android:text="@string/login_screen_infi_privacy_description" 
    android:textColor="@android:color/white" 
    android:textSize="10sp" /> 

<Space 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="50dp" 
    android:layout_alignStart="@+id/text1" 
    android:layout_alignLeft="@+id/text1" 
    android:layout_below="@+id/text1" 
    android:layout_alignParentBottom="true" /> 
</RelativeLayout> 

UPDATE: Đây là xml phong cách:

<style name="TextLabel" parent="TextAppearance.AppCompat"> 
    <!-- Hint color and label color in FALSE state --> 
    <item name="android:textColorHint">@android:color/white</item> 
    <item name="android:textColorHighlight">@android:color/white</item> 
    <item name="android:textColorLink">@android:color/white</item> 
    <item name="android:textSize">20sp</item> 
    <!-- Label color in TRUE state and bar color FALSE and TRUE State --> 
    <item name="colorAccent">@color/accent</item> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorControlActivated">@color/accent</item> 
</style> 

Đây là ngoại lệ:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.infibond.infi/com.infibond.account.login.LoginActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class EditText 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2281) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 
    at android.app.ActivityThread.access$800(ActivityThread.java:139) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5230) 
    at java.lang.reflect.Method.invokeNative(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) 
    at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by android.view.InflateException: Binary XML file line #22: Error inflating class EditText 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
     at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
     at com.infibond.account.login.LoginFragment.onCreateView(LoginFragment.java:92) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 
     at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 
     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 
     at com.infibond.base.Inheritance.Activities.ActivityBase.onStart(ActivityBase.java:112) 
     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171) 
     at android.app.Activity.performStart(Activity.java:5421) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2242) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 
     at android.app.ActivityThread.access$800(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5230) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by java.lang.UnsupportedOperationException: Can't convert to color: type=0x2 
     at android.content.res.TypedArray.getColor(TypedArray.java:327) 
     at android.widget.TextView.<init>(TextView.java:703) 
     at android.widget.EditText.<init>(EditText.java:61) 
     at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:60) 
     at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:56) 
     at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:101) 
     at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:938) 
     at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:992) 
     at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 
     at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:280) 
     at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:172) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:758) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
     at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
     at com.infibond.account.login.LoginFragment.onCreateView(LoginFragment.java:92) 
     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 
     at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 
     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 
     at com.infibond.base.Inheritance.Activities.ActivityBase.onStart(ActivityBase.java:112) 
     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171) 
     at android.app.Activity.performStart(Activity.java:5421) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2242) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 
     at android.app.ActivityThread.access$800(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5230) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596) 
     at dalvik.system.NativeStart.main(NativeStart.java) 

Không ai biết, tại sao điều này xảy ra và cách thích hợp để sửa chữa nó là gì?

Xin cảm ơn trước.

+0

tôi có thể xem giá trị màu 'Orange' của bạn? –

+0

@MohammadRahchamani ở đây là: # F16725

+0

ok. xem câu trả lời của tôi –

Trả lời

18

gì cố định vấn đề này đã được loại bỏ các parent="TextAppearance.AppCompat" từ cấu hình phong cách:

Vì vậy, bây giờ là phong cách trông như sau:

<style name="TextLabel"> 
    <!-- Hint color and label color in FALSE state --> 
    <item name="android:textColorHint">@color/White</item> 
    <item name="android:textColorHighlight">@android:color/white</item> 
    <item name="android:textColorLink">@color/White</item> 
    <item name="android:textSize">20sp</item> 
    <!-- Label color in TRUE state and bar color FALSE and TRUE State --> 
    <item name="colorAccent">@color/accent</item> 
    <item name="colorControlNormal">@android:color/white</item> 
    <item name="colorControlActivated">@color/accent</item> 
</style> 

Và trong cách bố trí xml:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/email_wrapper" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/loginInfiLogoRL" 
    android:theme="@style/TextLabel"> 

    <EditText 
     android:id="@+id/etUserName" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/login_screen_email_hint" 
     android:imeOptions="actionNext" 
     android:inputType="textEmailAddress" 
     android:maxLines="1" 
     android:nextFocusDown="@+id/etPassword" 
     android:singleLine="true" 
     android:textColor="@android:color/white" 
     android:textColorHighlight="@color/White" 
     android:textColorHint="@android:color/white" /> 

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

bạn có hiểu những gì đã làm 'parent =" TextAppearance.AppCompat "' để làm cho vụ tai nạn này? – Phoenix

+0

@Phoenix Không, tôi không biết. – OShiffer

+0

điều này làm việc như một say mê !!! –

0

Sự cố của bạn với một tệp khác là xml. Tôi nghĩ rằng đó là vì một trong các tệp có thể kéo của bạn mà bạn đang sử dụng thuộc tính color trong đó. đọc here để biết thêm thông tin.

+0

Tôi không thực sự hiểu, ý của bạn là gì .... Vậy vấn đề này nên được khắc phục như thế nào? –

+0

Tôi có thể xem tệp '@ style/TextLabel' của bạn không? –

+0

được thêm vào câu hỏi. –

Các vấn đề liên quan