【问题标题】:Selecting text on TextView (android 2.2)在 TextView 上选择文本(android 2.2)
【发布时间】:2023-03-13 03:02:01
【问题描述】:

如何在Android 2.2 上实现选择文本功能?我搜索了谷歌,但找不到解决方案。

【问题讨论】:

  • 您能否更具体地说明您正在使用哪些视图以及您想要做什么?
  • 正如我在标题中所述,在 TextView 中选择文本。你知道在记事本中选择文本吗?就是这样。拖动鼠标选择文本。
  • 您使用的是什么 Android API 级别?有些 API 支持文本选择,有些则不支持。这也可以在 UI 中实现,例如 HTC Sense。我不知道为此编写自己的方法会是微不足道的。
  • 我标记了“android-2.2”。我用Eclipse写程序,没有isSelectable属性。

标签: android android-2.2-froyo


【解决方案1】:

这是我发现(来自谷歌)为 android 1.6+ 提供支持的唯一方法,它可以工作但并不理想,我认为在股票 android 中你不能按住 webview 突出显示直到 v2.3 ,但我可能弄错了..

顺便说一句,这是针对 webview 的,它可能也适用于 textview,但我还没有尝试过

(注意:这是我发布的应用程序目前正在使用的,因此它适用于我测试过的所有手机,但我发现这个问题的唯一原因是因为我正在搜索并希望有人来过现在找到更好的方法)

我刚刚有一个名为“选择文本”的菜单项,它调用函数“selectnCopy()”

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //..
    switch (item.getItemId()) {
        case R.id.menu_select:
            selectnCopy();
            return true;
    //..
    }
}

看起来像这样:

public void selectnCopy() {
    Toast.makeText(WebClass.this,getString(R.string.select_help),Toast.LENGTH_SHORT).show();
    try {
        KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN,
                KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
        shiftPressEvent.dispatch(wv);
    } catch (Exception e) {
        throw new AssertionError(e);
    }
}

请注意,我已将 select_help 字符串放在那里作为祝酒词,这只是因为用户并不清楚它应该如何工作

<string name="select_help">Touch and drag to copy text.</string>

【讨论】:

  • 完美!但我不喜欢选择文本后出现“文本已复制到剪贴板”的消息。有什么改变或删除它的想法吗?
  • 不幸的是,我不相信有办法使用这种方法去除吐司
【解决方案2】:

@Stefan Hållén 提供的链接仅在 API 级别 11 之后有效。

Android 2.2 是 API Lv.8,这就是你无法获取资源标识符的原因。

【讨论】:

    【解决方案3】:

    您是否将文本设置为可选?像这样:

    android:textIsSelectable="false"  //OR true
    

    请参阅Documentation 以获取更多参考。

    【讨论】:

    • “错误:在包 'android' 中找不到属性 'textIsSelectable' 的资源标识符”。 Eclipse 中 TextView 的 Properties 视图没有这个属性。 :-??
    • Honeycomb(API 级别 11)之前不可用
    • @Stefan:最好在此处添加一些代码/文本以阐明链接指向的内容,因为该文档的唯一链接应该只是评论。 :)
    【解决方案4】:

    经过漫长而耗时的搜索,我找不到可以在 textview 中为 android API 级别 new Selectable TextView in android 3 (API <=11) component

    【讨论】:

      【解决方案5】:

      一个有趣的解决方法:

      您可以尝试在 web 视图中显示您的文本。

      您只需将 HTML 标记和所有这些内容写入要显示的字符串,并且应该可以使用 WebKit 浏览器进行选择。

      这对用户来说应该是相当轻量级和透明的,我认为它会解决你的问题。

      如果您需要代码示例,请告诉我,它应该相当简单。只需查看http://developer.android.com/resources/tutorials/views/hello-webview.html上的 WebView 文档

      祝你好运!

      【讨论】:

      • HelloWebView 示例没有选择功能。你能给我一些代码(或链接)吗?
      • webview 表单本身应该具有文本选择功能。您只需要长按即可。
      猜你喜欢
      • 1970-01-01
      • 2012-09-03
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2011-08-26
      • 1970-01-01
      相关资源
      最近更新 更多