【问题标题】:How can the on-screen text selection widget be changed?如何更改屏幕上的文本选择小部件?
【发布时间】:2011-08-09 08:41:44
【问题描述】:

我注意到不同的 Android 应用程序有不同的文本选择方法。如果您在浏览器中单击并按住,则会出现文本的特写,并且可以拖动左右边缘来修改选择。在 Gmail 应用程序中,光标下方会出现一个蓝色大圆圈,便于移动。

相比之下,EditText 框中的默认文本选择小部件非常原始。怎么改?

更新:我忘了说可编辑是错误的。当 editable 为 true 时,文本选择器很好。

附言屏幕上的文本选择器的正确名称是什么?

【问题讨论】:

    标签: android input android-edittext selection


    【解决方案1】:

    从 Android 3.0(API 级别 11)开始,您可以在任何 TextView 上设置 android:textIsSelectable 属性以使其文本可选。撰写本文时的默认 UI 类似于您为浏览器引用的行为。

    编辑:此外,默认的 Android 浏览器使用自己的独立于系统的文本选择机制,类似于 Gingerbread 中的默认文本选择句柄。 “蓝色圆圈”听起来像是手机制造商添加的自定义界面。

    【讨论】:

      【解决方案2】:

      我会将其实现为扩展EditText 并实现LongClickListenerClickListener 的自定义类。然后你就可以完全控制了。

      这只是伪代码,并为您指明正确的方向:

      public class PrettySelectionEditText extends EditText implements OnLongClickListener, OnClickListener 
      {
          private boolean isSelecting = false;
      
          public PrettySelectionEditText(Context context) 
          {
              super(context);
          }
      
          @Override
          public boolean onLongClick(View v) 
          {
              if (clickIsOnText)
              {
                  isSelecting = true;
                  //Highlight word and pretty controls
              }
              //Select here based on the text they've clicked on?
      
              //Return true if you want to consume the longClick
              return true;
          }
      
          @Override
          public void onClick(View v) 
          {
              //If in selection mode
              if (isSelecting)
              {
                  //check where they've clicked
                  if (clickIsInSelect)
                  {
                      updateSelection(click);
                  }
                  else
                  {
                      isSelecting = false;
                  }
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        您可以改用WebView 并启用文本选择。

        【讨论】:

          【解决方案4】:

          如果这仅仅是无法突出显示不可编辑文本的问题,您可以使用XML 属性

          android:textIsSelectable="true"
          

          对于那个EditText 框。

          来自安卓website

          android:textIsSelectable="true" 表示可以选择不可编辑文本的内容。

          至于您关于术语的问题,我将其称为光标

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-11-23
            • 1970-01-01
            • 1970-01-01
            • 2014-07-04
            • 1970-01-01
            • 2021-07-31
            • 2013-05-09
            • 1970-01-01
            相关资源
            最近更新 更多