Android вертикальная прокрутка для ListView внутри горизонтальной прокрутки - PullRequest
6 голосов
/ 21 июля 2011

У меня есть собственный ArrayAdapter для listView, который находится внутри горизонтального scrollView. Горизонтальная прокрутка работает нормально, но для вертикальной прокрутки мне пришлось сделать несколько хаков. Я просто хочу знать, если это хорошая идея, так как listView уже оптимизирован для вертикальной прокрутки. Есть ли способ прокрутки без этого хака?

В основном, взломать захват TouchEvent для scrollView (родительский класс) и распространить touchEvent в ListView.

scrolLView.setOnTouchListener(new OnTouchListener(){

        @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
            lv.setSmoothScrollbarEnabled(true);
            lv.dispatchTouchEvent(arg1);
        }
});

Это вызывает прокрутку и все работает. Я просто хочу знать, есть ли еще какие-то вещи, которые мне нужно принять во внимание.

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

Ваш горизонтальный вид прокрутки находится в родительском классе, поэтому сенсорное событие будет распознаваться только для вида прокрутки, а не для списка. Поэтому, если вы хотите, чтобы представление списка прокручивалось, то вы сделали правильно.

1 голос
/ 14 октября 2011

В дополнение к вашему коду я изменил его так, что внутри него есть только 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;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...