【发布时间】:2013-09-09 01:06:41
【问题描述】:
上下文
我有一个列表视图,其中行基本上由两个 TextView(一个标题和一个内容)组成。
第二个 TextView 可以有很长的文本,所以我设置了maxLines="6"。当用户点击 row 时,我删除了 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。
【问题讨论】: