gpt4 book ai didi

android - Textview 的 LinkMovementMethod 阻止列表项触摸事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:31 26 4
gpt4 key购买 nike

我在使用 Listview 时遇到了一些问题。 Listview 具有由 imageview 和 textview 组成的列表项。 Textview 包含可点击的链接。当我将 LinkMovementMethod 设置为 textviews 时,listitems 没有收到 onclick 事件。我仍然找不到任何正确的解决方案=(。任何人都可以解释如何解决它或给出一个在 listitem 中使用带有可点击链接的 textview 的例子吗?谢谢。这是在适配器中创建 TextView :

    TextView text = (TextView) ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(R.layout.post_content_text, null);
SpannableString sString = new SpannableString(d.getText());
//I have my own class UrlSpan that contain fields startPosition, endPosition and urlLink
for (UrlSpan us : ((TextData) d).getUrls())
{
URLSpan urlSpan = new URLSpan(us.getUrl());
sString.setSpan(urlSpan, us.getStart(), us.getEnd(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
}
text.setText(sString);
text.setMovementMethod(LinkMovementMethod.getInstance());
view.addView(text);

列表项是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible" >

<LinearLayout
style="?PostListRow"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp"
android:orientation="vertical"
android:padding="10dp" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="65dp"
android:orientation="horizontal" >

<ImageView
android:id="@+id/user_image"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_margin="3dp"
android:clickable="true"
android:src="@drawable/ic_no_photo" />

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="55dp"
android:layout_margin="0dp"
android:orientation="vertical" >

<TextView
android:id="@+id/user_title"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:clickable="true"
android:textSize="@dimen/title_in_list" />

<TextView
android:id="@+id/post_datetime"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:textSize="@dimen/text_size_small" />
</LinearLayout>

<TextView
android:id="@+id/post_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="123" />
</LinearLayout>
<!-- it is a view where textview with links is to be added to -->
<LinearLayout
android:id="@+id/post_data"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="6" >
</LinearLayout>

<TextView
android:id="@+id/post_view"
style="?PostText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:visibility="gone" />

<LinearLayout
android:id="@+id/topic_edit_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</LinearLayout>
</LinearLayout>

</LinearLayout>

最佳答案

尝试添加这个属性android:descendantFocusability="beforeDescendants"到你的 ListView

来自文档:

它定义了在寻找一个View获取焦点时ViewGroup与其后代之间的关系。在我看来,当您在 ListView 中有一些 Activity View (如按钮或编辑文本等)时,您必须定义 descendantFocusability

关于android - Textview 的 LinkMovementMethod 阻止列表项触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15360739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com