Android 文本输入文本拼写更正崩溃?

Android 文本输入文本拼写更正崩溃?,android,android-support-library,android-appcompat,android-support-design,android-textinputedittext,Android,Android Support Library,Android Appcompat,Android Support Design,Android Textinputedittext,我有一个TextInputText包装在TextInputLayout中。然而,在某些键盘上,当用户有拼写建议,并点击该单词以显示建议的弹出列表时,我的应用程序会严重崩溃,将键盘留在屏幕上,有时会超出对话框的顶部 这种情况发生在Android 6、7和8上。 我可以用运行6.0.1的三星Galaxy S5和库存三星键盘复制这个问题,但不能在同一台设备上使用Gboard或Swype,在运行Android 8.0的Nexus 5x上使用默认谷歌键盘 该应用程序以26为目标,并使用设计支持库版本26.

我有一个TextInputText包装在TextInputLayout中。然而,在某些键盘上,当用户有拼写建议,并点击该单词以显示建议的弹出列表时,我的应用程序会严重崩溃,将键盘留在屏幕上,有时会超出对话框的顶部

这种情况发生在Android 6、7和8上。 我可以用运行6.0.1的三星Galaxy S5和库存三星键盘复制这个问题,但不能在同一台设备上使用Gboard或Swype,在运行Android 8.0的Nexus 5x上使用默认谷歌键盘

该应用程序以26为目标,并使用设计支持库版本26.1.0。我们在几个版本的支持库中都看到了相同的堆栈跟踪,而这个或类似的问题据说以前已经解决了

很难找到原因并加以复制。我没有设置任何特殊的主题或颜色-只是appcompat。以下是堆栈跟踪:

java.lang.UnsupportedOperationException: Failed to resolve attribute at index 6: TypedValue{t=0x2/d=0x101009b a=1}
    at android.content.res.TypedArray.getColorStateList(TypedArray.java:484)
    at android.text.style.TextAppearanceSpan.<init>(TextAppearanceSpan.java:65)
    at android.text.style.TextAppearanceSpan.<init>(TextAppearanceSpan.java:45)
    at android.widget.Editor$SuggestionsPopupWindow$SuggestionInfo.<init>(Editor.java:3012)
    at android.widget.Editor$SuggestionsPopupWindow$SuggestionInfo.<init>(Editor.java:3007)
    at android.widget.Editor$SuggestionsPopupWindow.initContentView(Editor.java:2995)
    at android.widget.Editor$PinnedPopupWindow.<init>(Editor.java:2844)
    at android.widget.Editor$SuggestionsPopupWindow.<init>(Editor.java:2969)
    at android.widget.Editor.showSuggestions(Editor.java:2229)
    at android.widget.Editor$2.run(Editor.java:2109)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:158)
    at android.app.ActivityThread.main(ActivityThread.java:7224)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
java.lang.UnsupportedOperationException:未能解析索引6处的属性:TypedValue{t=0x2/d=0x101009b a=1}
位于android.content.res.TypedArray.getColorStateList(TypedArray.java:484)
位于android.text.style.TextAppearanceSpan.(TextAppearanceSpan.java:65)
位于android.text.style.TextAppearanceSpan.(TextAppearanceSpan.java:45)
在android.widget.Editor$suggestionspupwindow$suggestionfo.(Editor.java:3012)
在android.widget.Editor$suggestionspupwindow$suggestionfo.(Editor.java:3007)
在android.widget.Editor$SuggestionsPopupWindow.initContentView(Editor.java:2995)上
在android.widget.Editor$PinnedPopupWindow.(Editor.java:2844)
位于android.widget.Editor$SuggestionsPopupWindow(Editor.java:2969)
位于android.widget.Editor.showSuggestions(Editor.java:2229)
在android.widget.Editor$2.run(Editor.java:2109)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:158)
位于android.app.ActivityThread.main(ActivityThread.java:7224)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
以下是我能够找到的类似/相关问题:


不幸的是,似乎唯一的解决办法是在TextInputItemText字段上禁用所有用户的拼写建议,这是非常蹩脚的。我对其他想法/建议持开放态度。

在我这里,我已将自定义文本外观应用于父文本输入布局:

    <android.support.design.widget.TextInputLayout
      android:textColorHint="@color/textColorPrimary"
      android:textColor="@color/textColorPrimary"
      android:theme="@style/smallHint"
      android:hint="@string/add_a_comment"
      android:layout_marginEnd="16dp">

      <android.support.design.widget.TextInputEditText
        android:id="@+id/comment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="12sp"
        android:inputType="textImeMultiLine|textCapSentences"
        android:importantForAutofill="noExcludeDescendants"
        tools:ignore="UnusedAttribute"/>

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

主题定义如下所示:

<style name="smallHint" parent="TextAppearance.AppCompat">
  ...
</style>

...
这是不对的。TextInputLayout的主题不应设置为具有TextAppearance.AppCompat父级的内容


我应该使用app:hinttextearance而不是android:theme

android:textAppearance="@style/TextAppearanceMedium"

设置为AppCompativeText

我的主题扩展了theme.AppCompat.Light.DarkActionBar。我试过Theme.AppCompat.Light、Theme.AppCompat、Theme.Design和Theme.Design.Light,它们的崩溃情况都是一样的。有关解决方案,请参阅,您不需要禁用文本建议。@对于这个特定问题没有任何帮助的IDE先生(至少在我的情况下)。正如我在回答中指出的,这是由于将textAppearance.AppCompat作为样式的父级,并将其作为主题,而不是hintTextAppearance.Have存在相同的问题。。如何在不使用android:theme的情况下使用colorControlActivated和ColorControlNormal??有什么建议吗?