LongClick textView,可点击链接

时间:2012-03-17 01:24:00

标签: android

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

单击链接
my_text.setMovementMethod(LinkMovementMethod.getInstance());

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

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

android:autoLink="web

但这并不能使链接可点击。

我的问题是:是否有不同的方法可以设置LongClickListener,或者以不同的方式使链接可点击?

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

我应该注意,现在OnItemLongClickListener使链接注册了LongClicks,但是当textview没有链接或者用户试图在视图中的其他地方(除链接之外)进行longClick时,这会导致问题

代码: 我以编程方式对包含列表视图的relativeLayout进行膨胀,并将其添加到视图翻录器中:

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());

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

我的临时修复是将itemLongClickListener和onItemClickListener设置为listItem,只显示onListItemClick中可点击文本的对话框。这有效,但为用户添加额外的点击以与文本进行交互

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我的临时修复是将onItemLongClickListener和onItemClickListener设置为listItem,只显示onItemClick中可点击文本的对话框。这有效,但为用户添加额外的点击以与文本进行交互。

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