Android 多个文本视图还是一个具有可单击跨距的文本视图?

Android 多个文本视图还是一个具有可单击跨距的文本视图?,android,Android,我有一个模型数组,每个模型代表文本中的一个单词。看起来是这样的: ArrayList<Word> text; class Word { public String name; public boolean isPunctuationMark; ArrayList文本; 类词{ 公共字符串名称; 公共布尔值不定时标记; 我需要在活动中呈现该文本。我还需要做的是,当长时间单击某个单词时,我需要触发并激活并显示一个对话框,其中包含特定于所选单词的信息 我可以使用两种方

我有一个模型数组,每个模型代表文本中的一个单词。看起来是这样的:

ArrayList<Word> text;

class Word {
    public String name;
    public boolean isPunctuationMark;
ArrayList文本;
类词{
公共字符串名称;
公共布尔值不定时标记;
我需要在活动中呈现该文本。我还需要做的是,当长时间单击某个单词时,我需要触发并激活并显示一个对话框,其中包含特定于所选单词的信息

我可以使用两种方法:

  • 每个单词使用一个
    TextView
    widget
  • 使用一个
    TextView
    保存整个文本,但将每个单词设置为
    可点击span

  • 我已经开始实施第二种方法,但是对于单击范围上的
    longClick
    事件没有本机支持,因此我必须自己实施。而且,乍一看,使用
    textview
    而不是
    clickablespan
    更容易突出显示所选单词的文本和背景。因此,现在我正在考虑尝试第一种方法。在探索这些方法时,我是否错过了一些东西?也许还有第三种架构上更正确的方法更容易实现支持长时间单击?

    我建议您使用一个
    文本视图
    ,因为这是一个更高效的UI。当有请求时或者一个
    ViewGroup
    来测量它的所有子对象,只测量一个要比测量几千个快得多

    我发现了一个不错的库,您可以尝试使用。它使用API级别14中添加到
    TextView
    的方法

    public int getOffsetForPosition(浮点x,浮点y)

    在API级别14中添加获取最接近 指定的绝对位置。典型的用例是传递结果 将getX()和getY()的

    参数x屏幕上点的水平绝对位置 y屏幕上点的垂直绝对位置返回 位置最靠近目标的字符的字符偏移量 指定的位置。如果没有布局,则返回-1


    谢谢!:)因为我有
    ArrayList text;
    ArrayList的单词模型,我想我必须找到所选单词的模型,比较模型中的文本和所选单词,可能还有周围的单词,对吧?你知道如何使这个过程高效吗?你可以修改库以返回单词的编号,然后你就可以数组列表中具有该索引的元素…arraylist有助于从中获取内容。假设您将以与arraylist中的单词相同的顺序显示单词,这是一个好主意,让我尝试一下,然后返回:)。谢谢!