Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3

ScrollView в Android 4.0.x

22.06.2014, 18:54. Показов 1982. Ответов 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 минут
Актуально!

Ребята не каких соображений нету что ли? куда копать то?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2014, 18:54
Ответы с готовыми решениями:

Android studio|scrollview
Здравствуйте, мне надо сделать чтобы scrollview прокручивался во все стороны (по горизонтали,вертикали и диагонали)

Динамический ScrollView работает в Unity, не работает в Android
Странная проблема. Есть scrollview. Заполняю его динамически префабами. В unity работает, все заполняется, на телефоне (Android 8.1) не...

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

8
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
27.06.2014, 11:53  [ТС]
..АП..
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
29.06.2014, 16:38  [ТС]
Не кто не знает ? у всех кроме меня все норм работает ? РЕБяяяЯТА нууу хелп ми :\

Добавлено через 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 а по инерции (как обычно)
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
01.07.2014, 14:53  [ТС]
Админы можете галочку поставить!

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

создал новый класс
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;
}
}
1
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
03.07.2014, 10:24  [ТС]
Это получается баг ОС Android версии 4.0.x ?

т.к. в версии 4.0.х работало нормально! ))
0
22 / 22 / 4
Регистрация: 10.04.2011
Сообщений: 248
06.07.2014, 01:38
HorizontalScrollView а в нем ScrollView. Это принципиально неверно, так делать не рекомендуется, иначе возникает конфликт. Андроид не может понять какую вью вы скролите, советую пересмотреть интерфейс вашего приложения, если вам нужен подобный функционал.
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
06.07.2014, 16:40  [ТС]
MonStar, Почему то этот конфликт устранили в Jelly Bean,
Цитата Сообщение от MonStar Посмотреть сообщение
Это принципиально неверно
ну не знаю)) а если нужно именно так реализовать интерфейс ?

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


P.S.
Цитата Сообщение от MonStar Посмотреть сообщение
иначе возникает конфликт.
я пробывал и наоборот ScrollView в горизонтальном сколвью, так вот, там тоже такая же хрень !))) но уже при скроле по горизонтале если отклоняешься вверх\вниз то скролл по горизонтале блокируется.... так что наверное неправильно утверждать что
Цитата Сообщение от MonStar Посмотреть сообщение
HorizontalScrollView а в нем ScrollView. Это принципиально неверно,
! ?
0
22 / 22 / 4
Регистрация: 10.04.2011
Сообщений: 248
06.07.2014, 16:42
Цитата Сообщение от kaspersky Посмотреть сообщение
я пробывал и наоборот ScrollView в горизонтальном сколвью, так вот, там тоже такая же хрень !))) но уже при скроле по горизонтале если отклоняешься вверх\вниз то скролл по горизонтале блокируется.... так что наверное неправильно утверждать что ! ?
Не важно, какой класс в какой будет вложен. В любом случае будет не верно и возникнет конфликт свайпов.
Ваш наследник - более правильное решение.
0
Android
245 / 242 / 52
Регистрация: 19.01.2013
Сообщений: 1,896
Записей в блоге: 3
06.07.2014, 20:19  [ТС]
MonStar, но ведь Google сами говорят что если требуется скролить туда сюда \ верх и вниз то нужно так и делать ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2014, 20:19
Помогаю со студенческими работами здесь

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

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

ScrollView problem
Всем привет! :) Подскажите пожалуйста. Такая задача: есть много фотографий, около 300, необходимо используя ScrollView выводить на...

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

Отслеживание ScrollView
У меня есть 2 RecycleView которые я хочу при скролле одного, скролить и второй, единственное что я придумал, запретить им скролиться, и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru