我有一个带有自定义列表适配器(扩展了 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 都可以触摸。
我错过了什么?
最佳答案
您需要做以下两件事之一:
android:linksClickable="true"
在布局中的TextView
上在代码中:
txtViewTwo.setMovementMethod(LinkMovementMethod.getInstance());
最终结果是一样的。
关于ListView 项目上的 Android SpannableString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922685/