【发布时间】: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