2012-03-17 118 views
0

我正在写有文字的ListView控件的应用程序。在每一行中都有文字和链接的组合。我添加了一个OnItemLongClickListener到列表中,变成可点击的链接与LongClick TextView的,可点击的链接

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

制作(adapte的getView())链接点击:

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

这使得可点击的链接,但似乎消耗的所有点击他们得到TextView的面前。我试图添加一个返回false的longClickListener,但似乎没有任何影响。

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

+0

你能告诉我你需要什么longclick吗?我点击链接会在webview中打开它。你是否有要求单击列表中的项目时,会打开另一个活动及其详细信息? – Shubhayu 2012-03-17 02:26:46

+0

我用的是长按则可打开选项对话框,可将他们带到不同的活动,这取决于被点击的listItem用户。 – ByteMe 2012-03-20 02:48:00

+0

你可以添加代码,你现在把OnItemLongClickListener()和你让链接可点击的部分吗?还提供了包含你的列表和包含你的列表项目的XML。 – Shubhayu 2012-03-20 05:56:51

回答

0

我的临时解决方法是将onItemLongClickListener和onItemClickListener设置为listItem,并仅在onItemClick中显示一个包含可点击文本的对话框。这可以工作,但会为用户添加额外的点击以与文本进行交互。

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

2

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

+0

嘿路易!感谢您的建议,但我认为我不清楚。我需要整个视图才能够注册longClick,并且视图包含图像和几个文字视图。我想要一个可点击的链接,但在Longclick上,我显示一个对话框,其中包含用户选项列表。无论用户是长按图像,文本还是某些空白,都应显示对话框。我在xml中定义了一个包含列表项的“行”,我更喜欢他们可以在行中的任何位置使用longClick – ByteMe 2012-03-20 02:51:13