gpt4 book ai didi

android - ListView:textIsSelectable 和 onItemClick

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:18:05 33 4
gpt4 key购买 nike

上下文

我有一个 ListView ,其中行基本上由两个 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 文档:

When you call this method to set the value of textIsSelectable, it sets the flags focusable, focusableInTouchMode, clickable, and longClickable to the same value. These flags correspond to the attributes android:focusable, android:focusableInTouchMode, android:clickable, and android:longClickable. To restore any of these flags to a state you had set previously, call one or more of the following methods: setFocusable(), setFocusableInTouchMode(), setClickable() or setLongClickable().

我试图在 setTextIsSelectable(true) 之后将这些标志设置为 false,但我没能成功。

那么,有什么想法可以同时使用 textIsSelectableonItemClick 吗?

PS:仅支持 Android > 4.0。

最佳答案

我无意中遇到了同样的问题,但对这个已有 8 年历史的问题没有给出任何答案。我的解决方案如下:

  1. 在TextView中设置android:textIsSelectable="true"
  2. 不要为 ListView 设置 onItemClickListener
  3. 将适配器的 getView 中的 OnClickListener 设置为 TextView:
    override fun getView(position: Int, view: View?, parent: ViewGroup): View {
...
val listener = View.OnClickListener {
...
}
viewHolder.textView.setOnClickListener(listener)
}

这允许点击 TextView 以及选择其文本内容。

关于android - ListView:textIsSelectable 和 onItemClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18632234/

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