列表视图项目可滚动垂直

时间:2013-04-25 14:02:02

标签: android listview scroll

目前我正在使用ListView并且它正常运行。但是我在ListView中有一段文字,就像一个段落,我只想展示那两行文字,并使文本的其余部分可滚动,但我遇到的问题是,如果我制作{{ 1}}在TextView内可滚动,然后ListView获得其父(TextView)的焦点,并且不会让它滚动。

那么我可以实现这种不会干扰ListView的滚动属性的可滚动TextView功能吗?

谢谢。

3 个答案:

答案 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并且保持其父级并开始滚动。

通过这种方式我成功地实现了这一要求