我有一个listView的自定义ArrayAdapter,它位于水平scrollView中。水平滚动工作正常但是对于垂直滚动我不得不做一些黑客攻击。 我只是想知道它是否是一个好主意,因为listView已经针对垂直滚动进行了优化。 有没有办法滚动没有这个黑客?
hack基本上是为scrollView(父类)捕获touchEvent并将touchEvent传播到ListView。
scrolLView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
lv.setSmoothScrollbarEnabled(true);
lv.dispatchTouchEvent(arg1);
}
});
这会导致滚动发生并且事情有效。 我只是想知道我是否还需要考虑更多的事情。
由于
答案 0 :(得分:3)
您的水平滚动视图位于父类中,因此仅对滚动视图而不是列表视图识别触摸事件。因此,如果您希望滚动列表视图,那么您所采用的方式是正确的。
答案 1 :(得分:1)
除了您的代码之外,我还将其修改为只有ScrollView和内部多个ImageView项目的地方。
ScrollView _sv = (ScrollView)findViewById(R.id.scroller);
_sv.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event) {
_iv.setScrollContainer(true);
_iv.dispatchTouchEvent(event);
return false;
}
});