语境
我有一个列表视图,其中行基本上由两个 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 (内容)所以我设置android:textIsSelectable="true"
(也尝试以编程方式设置)。
但我无法展开/折叠我的 TextView 因为onItemClick
不再调用
那是因为textIsSelectable
捕获所有点击事件......来自Android doc:
当您调用此方法设置 textIsSelectable 的值时,它会将 flags focusable、focusableInTouchMode、clickable 和 longClickable 设置为相同的值。这些标志对应于属性 android:focusable、android:focusableInTouchMode、android:clickable 和 android:longClickable。要将这些标志中的任何一个恢复到您之前设置的状态,请调用以下一个或多个方法:setFocusable()、setFocusableInTouchMode()、setClickable() 或 setLongClickable()。
之后我尝试将这些标志设置为 false,setTextIsSelectable(true)
但我没有设法使其工作。
那么,任何想法如何同时使用textIsSelectable
和onItemClick
?
PS:仅支持Android > 4.0。