【问题标题】:adjust AppCompatEditText style调整 AppCompatEditText 样式
【发布时间】:2017-12-07 07:22:06
【问题描述】:

我有一个 CustomEditText 扩展了 EmojiEditText,它扩展了 AppCompatEditText 并派生了 https://github.com/vanniktech/Emoji 库。

我曾经为 CustomEditText 使用 ComposeEditText 样式。但是如果我添加这种样式,应用程序就会崩溃。请帮帮我。

我的edittext风格:

        <style name="ComposeEditText" parent="@style/Widget.AppCompat.EditText">
        <item name="android:padding">2dp</item>
        <item name="android:background">@null</item>
        <item name="android:maxLines">4</item>
        <item name="android:maxLength">2000</item>
        <item name="android:capitalize">sentences</item>
        <item name="android:autoText">true</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:imeOptions">flagNoEnterAction</item>
        <item name="android:inputType">textAutoCorrect|textCapSentences|textMultiLine</item>
        </style>

我在 xml 中的编辑文本:

         <com.android.android.util.view.CustomEditText
            android:id="@+id/editText"
            style="@style/ComposeEditText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            app:emojiSize="@dimen/emojiSize" />

在代码中:

public class CustomEditText extends EmojiEditText {

    public CustomEditText(Context context) {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @SuppressLint("DrawAllocation")
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
    }
}

错误日志:

    java.lang.RuntimeException: Unable to start activity 
        ComponentInfo{com.android.android/com.android.android.conversation.a.PRofile}: 
    android.view.InflateException: Binary XML file line #0: 
       Binary XML file line #0: Error inflating class com.android.android.util.view.CustomEditText
                                                                                 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
                                                                                 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
                                                                                 at android.app.ActivityThread.-wrap14(ActivityThread.java)
                                                                                 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                 at android.os.Looper.loop(Looper.java:154)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:6682)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
                                                                              Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class com.android.android.util.view.CustomEditText
                                                                              Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class com.android.android.util.view.CustomEditText
                                                                              Caused by: java.lang.reflect.InvocationTargetException

【问题讨论】:

  • 你的风格为什么inputType有多个选项?
  • 我都需要:)
  • 和使用 emojiSize 你试过删除它吗?因为我认为默认的edittext类没有这样的属性
  • EmojiEditText 支持表情符号
  • 显示CustomEditText

标签: android android-edittext styles


【解决方案1】:

看到您的CustomEditTextEmojiEditText,请尝试将您的样式的parent 设置为EmojiEditText 的样式。我认为问题在于您的风格继承自错误的风格

【讨论】:

    【解决方案2】:

    我只是删除“@style/”就解决了。谢谢你的帮助

    而不是

    <style name="ComposeEditText" parent="@style/Widget.AppCompat.EditText">
    

    使用

     <style name="ComposeEditText" parent="Widget.AppCompat.EditText">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2012-01-26
      相关资源
      最近更新 更多