背景
我有一个列表视图,其中行基本上由两个TextView(一个标题和一个内容)组成。
第二个TextView可以有一个很长的文本,所以我设置了maxLines =“6”
。当用户单击行时,我会取消maxLines
以显示完整文本。
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
TextView content = (TextView ) view.findViewById(R.id.content);
int limit = getResources().getInteger(R.integer.default_max_lines);
if (content.getMaxLines() > limit) {
content.setMaxLines(limit);
}
else {
content.setMaxLines(Integer.MAX_VALUE);
}
}
问题
以上代码运行良好。我想要选择我的第二个TextView(content),所以我设置了 android:textIsSelectable="true"
(也尝试过编程方式设置)。
但是我无法展开/折叠我的TextView,因为onItemClick
不再被调用了
这是因为textIsSelectable
捕获了所有的点击事件...
从Android文档中可以看到:
当您调用此方法设置textIsSelectable的值时,它会将focusable、focusableInTouchMode、clickable和longClickable标志设置为相同的值。这些标志对应于属性android:focusable、android:focusableInTouchMode、android:clickable和android:longClickable。要将任何这些标志恢复为先前设置的状态,请调用以下一个或多个方法之一:setFocusable()、setFocusableInTouchMode()、setClickable()或setLongClickable()。
我尝试在setTextIsSelectable(true)
后将这些标志设置为false,但我没有成功使其工作。
那么,有什么办法同时使用textIsSelectable
和onItemClick
吗?
PS:仅支持 Android > 4.0。