gpt4 book ai didi

android - 单击 ListView 中的问题和 android 中的可跨越字符串

转载 作者:行者123 更新时间:2023-11-30 00:56:28 27 4
gpt4 key购买 nike

我在 ListView 中放置的 TextView 字段中遇到问题。

  • 在文本字段中有三个可生成的字符串,其中第一个可生成的字符串是可点击的 span(),另外两个是静态的。
  • 我的问题是,当我单击 ListView 中的任何区域时,列表项被单击,但我单击其他两个静态文本字段时,未检测到 ListView 单击。

代码:

TextField 点击:

holder.txtmail = new SpannableString(rowItems.get(position).getTxtEmail());
holder.txtmail.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.color)), 0, holder.txtmail.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.txtmail.setSpan(new MyClickableSpan(strText), 0, holder.txtmail.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.mainName.setText(holder.txtmail);
holder.txtSt = new SpannableString(rowItems.get(position).getTxtSt());
holder.txtSt.setSpan(new ForegroundColorSpan(Color.BLACK),0, holder.txtSt.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.mainName.append(holder.txtSt);
holder.txtEvt = new SpannableString(rowItems.get(position).getTxtEvt());
holder.txtEvt.setSpan(new ForegroundColorSpan(Color.BLACK), 0, holder.txtEvt.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.txtEvt.setSpan(new StyleSpan(Typeface.BOLD), 0, holder.txtEvt.length(), 0);
holder.txtEvt.setSpan(new MyClickableSpan(rowItems.get(position).getTxtEvt()), 0, holder.txtmail.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.mainName.append(holder.txtEvt);
holder.mainName.setMovementMethod(LinkMovementMethod.getInstance());
holder.mainName.setFocusable(false);
holder.mainName.setClickable(false);

private class MyClickableSpan extends ClickableSpan {
String clicked;

private MyClickableSpan(String string) {
super();
this.clicked = string;
}

public void onClick(View tv) {
Toast.makeText(context, "" + clicked, Toast.LENGTH_SHORT).show();
}

public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(false);
}
}

ListView 点击:

getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show();
}
});

用于 ListView 布局的 XMl

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

<ImageView
android:id="@+id/icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="40dp"
android:layout_marginTop="5dp"
android:contentDescription="@string/app_name" />

<TextView
android:id="@+id/ltMain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_toEndOf="@+id/icon"
android:textSize="12sp" />

<TextView
android:id="@+id/ltSub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ltMain"
android:layout_marginBottom="10dp"
android:layout_marginStart="15dp"
android:layout_toEndOf="@+id/icon"
android:textSize="12sp" />
</RelativeLayout>

最佳答案

也将MyClickableSpan添加到不可点击的项目上,并执行列表项目点击它

关于android - 单击 ListView 中的问题和 android 中的可跨越字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40078582/

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