目前我正在使用ListView
并且它正常运行。但是我在ListView
中有一段文字,就像一个段落,我只想展示那两行文字,并使文本的其余部分可滚动,但我遇到的问题是,如果我制作{{ 1}}在TextView
内可滚动,然后ListView
获得其父(TextView
)的焦点,并且不会让它滚动。
那么我可以实现这种不会干扰ListView
的滚动属性的可滚动TextView
功能吗?
谢谢。
答案 0 :(得分:4)
我能够通过以下方式做到这一点:
进入ListAdapter的getView方法获取该行的TextView对象,并写入
textView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.getParent().getParent().requestDisallowInterceptTouchEvent(true);
return false ;
}
});
当您触摸TextView时,控制滚动
答案 1 :(得分:1)
你想要实现的目标真的是不可能的。操作系统如何知道您正在尝试滚动列表与列表行段落?在实际列表本身可以滚动之前,您基本上需要滚动到列表行段落的底部。这让用户感到困惑,而不是常见的用户体验。
我建议你研究一下ExpandableListView。它允许您拥有每行的折叠版本,在您的情况下,每个列表行只有2行文本。当用户点击该行时,它可以扩展为完整的段落形式,并且列表将一直可滚动。你可以在网上找到很多教程。
答案 2 :(得分:1)
没有什么是不可能的,但做事的方式可能很难。直接这个东西是不能实现的,但间接是的,它可以实现,是的,我实现了。 我是如何实现的有点复杂,但是我会分享我是如何实现的。
在ListView
中,当我点击Textview
时,我阻止listView的触摸模式,以便他们的toch方法不会相互拦截,这可以通过使用{{1}来完成}
这会阻止父requestDisallowInterceptTouchEvent(true);
)的TouchListener
。
现在点击ListView
我允许其触摸侦听器和TextView
()
但对于Movement我制作了一个自定义类,Class正在关注
setMovementMethod
之后,当我点击父级时,我启用了父级的TouchIntercepter设置为true并且保持其父级并开始滚动。
通过这种方式我成功地实现了这一要求