ListView 项目上的 Android SpannableString

标签 android string listview touch html

我有一个带有自定义列表适配器(扩展了 BaseAdapter)的 ListView。我的列表项的 View 是从这个布局中膨胀的:

<?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="wrap_content"
    android:layout_gravity="center_vertical|center_horizontal"
    >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="center_vertical"
        >
        <TextView
            android:id="@+id/txtOne"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textStyle="bold"
        />

        <TextView
            android:id="@+id/txtTwo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        />
    </LinearLayout>
</LinearLayout>

在 getView 方法中创建并填充项目的 View :

if (convertView == null) {
    convertView = inflater.inflate(R.layout.teste, parent, false);
}
((TextView) convertView.findViewById(R.id.txtOne)).setText("Some text");
final SpannableString ss = new SpannableString("Another text");
ss.setSpan(new ClickableSpan() {
    @Override
    public void onClick(final View widget) {
        startActivity(new Intent(widget.getContext(), AnotherActivity.class));
    }
    }, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
((TextView) convertView.findViewById(R.id.txtTwo)).setText(ss);

它在项目 View 中显示了我的可跨越字符串,但我无法触摸它。我只能触摸整个项目 View 。

我想在用户触摸 spannable 字符串时开始另一个 Activity ,但我也希望整个项目 View 都可以触摸。

我错过了什么?

最佳答案

您需要做以下两件事之一:

  1. android:linksClickable="true" 在布局中的 TextView

  2. 在代码中:txtViewTwo.setMovementMethod(LinkMovementMethod.getInstance());

最终结果是一样的。

关于ListView 项目上的 Android SpannableString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922685/

相关文章:

android - 我的 Android ListView 项目布局看起来很糟糕

android - 是否可以在没有折叠工具栏布局的情况下使用 coordinatorlayout 进行简单的图像查看器视差?

java - 删除ListView中的数据

C - 如何检查不需要的字符是否在数组中?

c# - ListView DeleteMethod 未传递 DataKeyNames 值

java - 尝试使用notifyDataSetChanged更新listView的自定义列表适配器但不起作用

java - 从线程创建 Intent

android - 想要使用 Android NDK 强制 wchar_t 成为一个无符号的短

javascript - 为什么数组的索引在下面的代码中是一个字符串?

java - 我的数组出现空指针异常?