Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
#1

ScrollView в Android 4.0.x - Программирование Android

22.06.2014, 18:54. Просмотров 1115. Ответов 8
Метки нет (Все метки)

имею HorizontalScrollView а в нем ScrollView, при прокрутки вниз если уклонится чуток вправо влево перестает скрол по вертикале (вроде тока 4.0.х так) в 4.1.х вроде норм.. если начал скролить вниз то влево-вправо уже не пойдет

как это можно решить ?

Добавлено через 9 часов 4 минуты
не кто не сталкивался ?

вот я нашел след. код (но это не совсем то что мне нужно ?)

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
HorizontalScrollView hv = (HorizontalScrollView)findViewById(R.id.myHsView);  // your HorizontalScrollView inside scrollview
    hv.setOnTouchListener(new ListView.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN:
                    // Disallow ScrollView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                    break;
 
                case MotionEvent.ACTION_UP:
                    // Allow ScrollView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                }
 
                // Handle HorizontalScrollView touch events.
                v.onTouchEvent(event);
                return true;
            }
        });


Добавлено через 20 часов 17 минут
Актуально!

Ребята не каких соображений нету что ли? куда копать то?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2014, 18:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ScrollView в Android 4.0.x (Программирование Android):

ScrollView - Программирование Android
Привет) Работаю со ScrollView у меня есть например 5 изображений, грубо говоря каждое отвечает за свой функционал, как при прокрутке мне...

ScrollView - Программирование Android
Добрый день! Работаю с обычным ScrollView. Получаю что-то типа: Подскажите пожалуйста, можно ли настроить ScrollView, чтобы получить...

Listview and scrollview - Программирование Android
Здравствуйте у меня такая проблема. есть LinearLayout в котором чередуется textview и динамический listview. Пролема в том что...

Наложение на ScrollView - Программирование Android
Добрый день. Вот такая проблема, у меня сверху ScrollView лежит еще один блок LinearLayout. Как сделать чтобы в этих блоках...

Конец ScrollView - Программирование Android
Здравствуйте, уважаемые форумчане? Есть ли в ScrollView метод, который определяет, что ScrollView сейчас дошел до конца, или метод,...

Промотать ScrollView - Программирование Android
Экран содержит ScrolView, на нем находятся элементы (например кнопки). Можно ли сразу показать не начало ScrollView, а показать нижние...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
27.06.2014, 11:53  [ТС] #2
..АП..
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
29.06.2014, 16:38  [ТС] #3
Не кто не знает ? у всех кроме меня все норм работает ? РЕБяяяЯТА нууу хелп ми :\

Добавлено через 14 часов 48 минут
Долго искал!. спасибо что не кто не помог! вот решение моего вопроса

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
final HorizontalScrollView hScroll = (HorizontalScrollView) value.findViewById(R.id.scrollHorizontal);
    final ScrollView vScroll = (ScrollView) value.findViewById(R.id.scrollVertical);
    vScroll.setOnTouchListener(new View.OnTouchListener() { //inner scroll listener         
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    });
    hScroll.setOnTouchListener(new View.OnTouchListener() { //outer scroll listener         
        private float mx, my, curX, curY;
        private boolean started = false;
 
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            curX = event.getX();
            curY = event.getY();
            int dx = (int) (mx - curX);
            int dy = (int) (my - curY);
            switch (event.getAction()) {
                case MotionEvent.ACTION_MOVE:
                    if (started) {
                        vScroll.scrollBy(0, dy);
                        hScroll.scrollBy(dx, 0);
                    } else {
                        started = true;
                    }
                    mx = curX;
                    my = curY;
                    break;
                case MotionEvent.ACTION_UP: 
                    vScroll.scrollBy(0, dy);
                    hScroll.scrollBy(dx, 0);
                    started = false;
                    break;
            }
            return true;
        }
    });
Добавлено через 18 минут
все равно конечно что то не то .. так как
Java
1
2
vScroll.scrollBy(0, dy);
hScroll.scrollBy(dx, 0);
по инерции как сделать ? так чтобы скролился не до dy и dx а по инерции (как обычно)
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
01.07.2014, 14:53  [ТС] #4
Админы можете галочку поставить!

Вот то что я искал! Все ништяк! работает как часы!

создал новый класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import android.content.Context;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ScrollView;
 
public class VerticalScrollView extends ScrollView {
 
 
public VerticalScrollView(Context context) {
super(context);
}
 
private float downXpos = 0;
private float downYpos = 0;
private boolean touchcaptured = false;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
downXpos = event.getX();
downYpos = event.getY();
touchcaptured = false;
break;
case MotionEvent.ACTION_UP:
requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_MOVE:
float xdisplacement = Math.abs(event.getX() - downXpos);
float ydisplacement = Math.abs(event.getY() - downYpos);
if( !touchcaptured && xdisplacement < ydisplacement) {
requestDisallowInterceptTouchEvent(true);
touchcaptured = true;
}
break;
}
super.onTouchEvent(event);
return true;
}
}
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
03.07.2014, 10:24  [ТС] #5
Это получается баг ОС Android версии 4.0.x ?

т.к. в версии 4.0.х работало нормально! ))
MonStar
19 / 19 / 3
Регистрация: 10.04.2011
Сообщений: 225
06.07.2014, 01:38 #6
HorizontalScrollView а в нем ScrollView. Это принципиально неверно, так делать не рекомендуется, иначе возникает конфликт. Андроид не может понять какую вью вы скролите, советую пересмотреть интерфейс вашего приложения, если вам нужен подобный функционал.
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
06.07.2014, 16:40  [ТС] #7
MonStar, Почему то этот конфликт устранили в Jelly Bean,
Цитата Сообщение от MonStar Посмотреть сообщение
Это принципиально неверно
ну не знаю)) а если нужно именно так реализовать интерфейс ?

вот выше скинул класс наследник от ScrollView который без всяких конфликтов работает


P.S.
Цитата Сообщение от MonStar Посмотреть сообщение
иначе возникает конфликт.
я пробывал и наоборот ScrollView в горизонтальном сколвью, так вот, там тоже такая же хрень !))) но уже при скроле по горизонтале если отклоняешься вверх\вниз то скролл по горизонтале блокируется.... так что наверное неправильно утверждать что
Цитата Сообщение от MonStar Посмотреть сообщение
HorizontalScrollView а в нем ScrollView. Это принципиально неверно,
! ?
MonStar
19 / 19 / 3
Регистрация: 10.04.2011
Сообщений: 225
06.07.2014, 16:42 #8
Цитата Сообщение от kaspersky Посмотреть сообщение
я пробывал и наоборот ScrollView в горизонтальном сколвью, так вот, там тоже такая же хрень !))) но уже при скроле по горизонтале если отклоняешься вверх\вниз то скролл по горизонтале блокируется.... так что наверное неправильно утверждать что ! ?
Не важно, какой класс в какой будет вложен. В любом случае будет не верно и возникнет конфликт свайпов.
Ваш наследник - более правильное решение.
ILNAR_93
Android
220 / 220 / 23
Регистрация: 19.01.2013
Сообщений: 1,677
Записей в блоге: 3
06.07.2014, 20:19  [ТС] #9
MonStar, но ведь Google сами говорят что если требуется скролить туда сюда \ верх и вниз то нужно так и делать ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2014, 20:19
Привет! Вот еще темы с ответами:

Данные в ScrollView по середине - Программирование Android
Всем привет у меня возникла проблема размещения данных в ScrollView по середине. Дело в том что когда размещаешь данные по середине в...

Задать ScrollView программно - Программирование Android
Здраствуйте! Как сделать ScrollView с элементом LinearLayout программно? Делаю одно, не работает другое... ScrollView scroll = new...

Автоматическая прокрутка ScrollView - Программирование Android
Имеется ScrollView, а внутри него LinearLayout, в котором находятся кнопки. Как сделать так, чтобы на тех экранах, где прокрутка нужна,...

ScrollView для изображений - Программирование Android
при загрузке картинок в ScrollView возникает следующая ситуация до 12 картинок все нормально а 13 картинку уже недьзя переполняется буфер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.07.2014, 20:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru