【发布时间】:2011-12-19 08:28:24
【问题描述】:
我想要做的:一个包含这样消息的列表:
这是用户写入的信息,它将很好地换行到下一行。完全一样。
我有什么:
ListView R.layout.list_item:
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_message"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="(Message Text)" />
扩展上述布局并执行以下操作的适配器:
SpannableStringBuilder f = new SpannableStringBuilder(check.getContent());
f.append(username);
f.setSpan(new InternalURLSpan(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Clicked User", Toast.LENGTH_SHORT).show();
}
}), f.length() - username.length(), f.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
f.append(" " + message);
messageTextView.setText(f);
messageTextView.setMovementMethod(LinkMovementMethod.getInstance());
meesageTextView.setFocusable(false);
InternalURLSpan 类
public class InternalURLSpan extends ClickableSpan {
OnClickListener mListener;
public InternalURLSpan(OnClickListener listener) {
mListener = listener;
}
@Override
public void onClick(View widget) {
mListener.onClick(widget);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}
在onCreate(...)的活动中:
listView.setOnItemClickListener(ProgramChecksActivity.this);
以及上面的实现
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Toast.makeText(context, "Clicked Item", Toast.LENGTH_SHORT).show();
}
问题:
点击项目,不显示吐司。只有点击用户名才会显示 toast。
我猜,setMovementMethod(LinkMovementMethod.getInstance()); 使 TextView 可点击。所以项目本身不再被点击。
如何使这些项目再次可点击?拥有我想要的相同功能。
【问题讨论】:
-
不确定只是尝试在 xml android 中尝试将 ListView 行的 TextView 设为 focusable=false。
-
试过了,还是不行:(
-
这是我现在的完全相同的问题,我似乎找不到合适的解决方案......
标签: android