我正在编写一个包含文本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中可点击文本的对话框。这有效,但为用户添加额外的点击以与文本进行交互
答案 0 :(得分:2)
我会创建一个自定义适配器,将ListView设置为使用该适配器,然后在getView中,在TextView上设置一个View.OnClickListener,它包含您的文本,并在TextView上设置一个View.OnLongClickListener,它包含您的链接。删除您在问题中引用的现有侦听器,以便它们不会发生冲突。
答案 1 :(得分:0)
我的临时修复是将onItemLongClickListener和onItemClickListener设置为listItem,只显示onItemClick中可点击文本的对话框。这有效,但为用户添加额外的点击以与文本进行交互。
如果发布了更好的答案,我将更改选定的答案