【问题标题】:Cursor is not visible in empty custom EditText on KitKat光标在 KitKat 上的空自定义 EditText 中不可见
【发布时间】:2016-05-18 20:51:40
【问题描述】:

我创建了一个自定义 EditText 类,它扩展了 android.widget.EditText。在 KitKat 和之前的 OS 版本上运行应用程序时,如果自定义 EditText 为空,则不会出现光标。输入文字后就会出现。

我尝试了在此站点上发布的多种解决方案,包括将 android:textCursorDrawable="@null"android:textIsSelectable="true" 添加到 XML 以及以编程方式添加这些属性。这些解决方案都没有奏效。

自定义EditText 确实有我正在设置的背景,但它需要在那里。设计约束意味着我必须设置非默认背景。

那么问题来了,当自定义EditText为空时,如何让光标出现?

这是自定义视图的 XML:

<?xml version="1.0" encoding="utf-8"?>
<com.example.CustomEditText
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:background="@drawable/custom_edit_text_background"
    android:gravity="start"
    android:imeOptions="actionDone"
    android:inputType="textCapSentences|textMultiLine"
    android:maxLines="5"
    android:padding="@dimen/custom_padding"
    android:textAppearance="@style/TextAppearance.AppCompat.Medium"
    android:textColor="@color/custom_color"/>

【问题讨论】:

    标签: android android-edittext android-custom-view android-4.4-kitkat


    【解决方案1】:

    我找到的解决方案是在自定义EditText 上设置minWidth40dp 的值对我有用。现在光标会出现在视图中,即使是空的。

    【讨论】:

    • 宽度不能为0的原因是因为这样不会留下任何空间来显示光标。 ...刚刚发现这个。
    【解决方案2】:

    对于初学者,从 XML 中一次删除一项。首先查看光标是否受到其他任何东西的影响(例如 android:gravity="start"android:textAppearance="@style/TextAppearance.AppCompat.Medium")。

    然后发布您的@drawable/custom_edit_text_background,以便我们查看 XML。最后,发布您的课程CustomEditText。您可能无意中导致了其中的问题。


    这些可能会有所帮助:

    【讨论】:

    • 如问题所述,我已经尝试过您建议的解决方案。他们没有为我工作。这些 XML 属性对问题没有影响。
    【解决方案3】:

    只需添加对我有用的解决方案: 我在EditText 上设置了hint 属性。不过不能为空,所以我使用了空格。

    就我而言android:hint=" "

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-03
      • 2013-08-22
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2014-06-08
      相关资源
      最近更新 更多