ScrollView с кнопками внутри, без ответа до второго нажатия на любую кнопку внутри
Я пару дней пытался решить эту проблему, но я не могу понять это. Проблема в том, что простая активность с простым макетом, ScrollView - > LinearLayout - > и множеством кнопок внутри макета (в содержимом прокрутки). Все работает отлично, но есть одна хитрость. Когда я нажимаю кнопку, скажем, в верхней части содержимого прокрутки и сразу прокрутите вниз до нижней части содержимого и нажмите другую кнопку, ничего не произойдет, пока я не нажму второй раз и все снова приходит в норму. Это можно воспроизвести в любое время, и это независимый код (я пробовал более 20 сценариев). У меня пока нет большого опыта работы в Android, но похоже, что прослушиватель прокрутки останавливает прослушиватель onClick или что-то в этом роде. Любая помощь в этом будет очень признательна. Заранее спасибо.
PD. Если я программно делаю scrollTo()
, вместо ручной прокрутки пальцами, все работает просто отлично, и щелчок отвечает при первом касании. Это просто подавляет меня.
4 ответов
все ведет себя нормально.
когда вы начинаете перемещаться,ScrollView
будет требовать сенсорных событий, пока вы не перестанете касаться экрана немного. В Android 2.2 вы узнаете, когда прокрутка считается полной, потому что полоса прокрутки справа исчезнет.
у меня такая же проблема. Я не согласен, что это проблема исчезающей полосы прокрутки. Если вы отключите выцветание, произойдет то же самое.
пробовал несколько подходов в темах.XML-код:
<item name="android:scrollbarDefaultDelayBeforeFade">100</item>
<item name="android:scrollbarFadeDuration">100</item>
<item name="android:fadeScrollbars">true</item>
но ничего не помогало. Кажется, что это системная вещь с scrollViews. Это может помочь увидеть, что происходит:
setOnScrollListener(new OnScrollListener(){
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
if(scrollState == 0) Log.i("a", "scrolling stopped...");
}
});
}
но это (к сожалению)не помогает в преодолении проблемы , а скорее объясняет ее.
Примечание: это происходит только если вы использовать функцией ScrollView. У ListView нет этой проблемы.
у кого-нибудь есть другая идея ?
У меня такая ситуация. У меня есть ExpandableListView, он просто ведет себя нормально. Когда я поворачиваю мобильный телефон в горизонтальное положение и поворачиваю назад, некоторые элементы в одной группе ExpandableListView не будут отвечать на событие click. Если я не прокручу список или не щелкну элемент группы этих элементов, событие будет отправлено элементам, которые я щелкнул ранее, и правильно выполнит коды прослушивателя щелчка.
Это произошло как в Android 2.3 и 4.0...
Я смог исправить это, переопределив onScrollChanged, а затем отправив ScrollView MotionEvent через OnTouchEvent, когда границы будут достигнуты для имитации касания пользователя.
Это hackiest, грязный программирования, я могу представить, но это работает хорошо в моем приложении. Это приложение предназначено только для телефонов под управлением 2.2, и эта ошибка должна быть исправлена каким-то образом.
Если у кого есть лучшее решение, Пожалуйста, дайте мне знать.
Edit: эта проблема только в 2.2 btw, они исправили это в 2.3, и это не было проблемой в 2.1.