【问题标题】:LongClick textView, clickable linkLongClick textView,可点击链接
【发布时间】:2012-03-21 08:13:00
【问题描述】:

我正在编写一个包含文本 ListView 的应用程序。在每一行中都有文本和链接的组合。我在列表中添加了一个 OnItemLongClickListener 并使用

使链接可点击
my_text.setMovementMethod(LinkMovementMethod.getInstance());

问题是,如果我能够点击链接,我无法让 textView 注册 LongClick。

我尝试了不同的方法来使链接可点击,例如

android:autoLink="web

但这不会使链接可点击。

我的问题是:我应该设置 LongClickListener 的不同方式,还是让链接可点击的不同方式?

有没有其他人遇到过类似的问题?

我应该注意,现在 OnItemLongClickListener 使链接注册 LongClicks,但是当文本视图没有链接或用户尝试在视图中的其他位置(除了链接)长点击时,这会导致问题

代码: 我以编程方式膨胀包含列表视图的 relativeLayout 并将其添加到视图翻转器:

相对布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ListView
        android:id="@+id/my_list"
        style="@style/listViewSimple"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#f9f9f9"
        android:cacheColorHint="#00000000"
        android:divider="#ccc"
        android:dividerHeight="1px"
        android:fadingEdge="none"
        android:fadingEdgeLength="30dp"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:persistentDrawingCache="none" >
    </ListView>

</RelativeLayout>

以编程方式添加所有内容:

            RelativeLayout list = (RelativeLayout) LayoutInflater.from(MyActivity.this).inflate(R.layout.my_list_layout, null);
            vf.addView(list);
            ListView lv = (ListView) list.findViewById(R.id.my_list);
            lv.setOnItemLongClickListener(listLongListener);

使链接可点击(在适配器的 getView() 中):

        my_tv.setText(Html.fromHtml(formatted_text)));
        my_tv.setLinkTextColor(linkColor);
        my_tv.setMovementMethod(LinkMovementMethod.getInstance());

这使得链接可点击,但似乎在它们到达文本视图之前消耗了所有点击。我尝试添加一个返回 false 的 longClickListener,但这似乎没有任何影响。

我的临时解决方法是为 listItem 设置一个 itemLongClickListener 和一个 onItemClickListener,并在 onListItemClick 中显示一个带有可点击文本的对话框。这可行,但增加了用户与文本交互的额外点击

【问题讨论】:

  • 你能告诉我你需要长按吗?我知道单击链接将在网络视图中打开它。您是否要求单击列表中的项目时,它会打开另一个活动及其详细信息?
  • 我使用长按为用户打开一个选项对话框,根据单击的 listItem 将他们带到不同的活动。
  • 您能否添加您当前放置 OnItemLongClickListener() 的代码以及使链接可点击的部分?还提供包含您的列表的 xml 和包含 ure 列表项的xml

标签: android


【解决方案1】:

我将创建一个自定义适配器,将您的 ListView 设置为使用该适配器,然后在 getView 中,在包含您的文本的 TextView 上设置一个 View.OnClickListener,在包含您的链接的 TextView 上设置一个 View.OnLongClickListener。删除您在问题中提到的现有侦听器,以免它们发生冲突。

【讨论】:

  • 嘿路易!感谢您的建议,但我想我不清楚。我需要整个视图才能注册 longClick,并且该视图包含一个图像和几个文本视图。我希望链接是可点击的,但在 Longclick 上,我会显示一个对话框,其中包含用户选项列表。无论用户长按图像、文本还是一些空白,都应该出现对话框。我在 xml 中定义了一个包含列表项的“行”,如果它们可以长按行中的任何位置,我会更喜欢
【解决方案2】:

我的临时解决方法是为 listItem 设置一个 onItemLongClickListener 和一个 onItemClickListener,并在 onItemClick 中显示一个带有可点击文本的对话框。这可行,但增加了用户与文本交互的额外点击。

如果发布了更好的答案,我将更改所选答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2016-04-07
    • 2011-02-13
    • 2012-03-13
    相关资源
    最近更新 更多