Android,如何停止出现在EditText下方的指针

时间:2012-10-16 08:18:05

标签: android android-edittext

我有一个包含一些EditTexts的活动。当我单击EditText更改其中的文本时,光标出现的下方会出现一个蓝色箭头。我怎么能阻止这种情况出现?

Example of annoying blue arrow

4 个答案:

答案 0 :(得分:9)

正如MarvinLabs所指出的,这是Android SDK中的一组可绘制内容。它们可以被覆盖。

  1. 在sdk平台中查找这些图片:

    • text_select_handle_left.png
    • text_select_handle_middle.png
    • text_select_handle_right.png
  2. 将它们复制到drawables文件夹,这样就可以引用本地副本了。你可以改变它们的颜色,使它们变空,或任何你想要的颜色。请注意,正如MarvinLabs所说,完全删除它们可能并不明智,因为它们可以帮助用户选择要剪切和复制的文本。

  3. 如果您还没有在styles.xml中定义自定义主题,请定义一个。然后将这些项添加到其中:

  4. _

    <style name="CustomTheme" parent="@android:style/Theme.Holo.Light">
      <item name="android:textSelectHandleLeft">@drawable/text_select_handle_left</item>
      <item name="android:textSelectHandleRight">@drawable/text_select_handle_right</item>
      <item name="android:textSelectHandle">@drawable/text_select_handle_middle</item>
    </style>
    

    <强> BEFORE:

    before

    <强> AFTER:

    after

    (不同的EditTexts,但你明白了)

答案 1 :(得分:2)

此指针是一个系统帮助程序,允许用户轻松移动光标(比仅通过触摸EditText更精确)。所以我不知道你是否可以删除它,但我相信它无论如何都不是一个好主意。

此外,这种指针将根据设备进行不同的样式设置。如果你看看SDK的android源代码,你会发现一些名为text_select_handle_XXX.png的drawable,我想你会发现如何在你自己的主题中改变系统风格。

答案 2 :(得分:1)

我非常确定这只发生在特定的API或设备上。它也可能在其他应用程序上有所不同。最终,我没有看到任何真正的方法来禁用设备本机的东西。此外,那里的设备非常庞大,所以即使你找到了办法,你也很难禁用它。

答案 3 :(得分:0)

您可以使用自定义BindingContext以编程方式执行此操作。您需要创建一个自定义EditText实现,其中MovementMethod返回false。然后,您只需覆盖canSelectArbitrarily()即可返回EditText.getDefaultMovementMethod()

CustomMovementMethod