ScrollView con botones en el interior, sin respuesta hasta el segundo clic en cualquier botón dentro

He estado un par de días tratando de resolver esto pero no puedo entenderlo. El problema es, actividad simple, con diseño simple, ScrollView -> LinearLayout -> y una gran cantidad de botones dentro del diseño (dentro del contenido de desplazamiento). Todo funciona bien, pero una cosa difícil. Cuando hago clic en un botón, digamos que en la parte superior del contenido de desplazamiento y de inmediato desplácese hasta el final del contenido y haga clic en otro botón allí, no pasa nada hasta que haga clic en una segunda vez y todo vuelve a la normalidad de nuevo. Esto se puede reproducir en cualquier momento y es independiente del código (he intentado más de 20 escenarios). Todavía no tengo mucha experiencia en Android, pero parece que el oyente de desplazamiento detiene el oyente onClick o algo así. Cualquier ayuda con esto sería muy apreciada. Gracias de antemano.

PD. Si programáticamente hago un scrollTo() , en lugar de desplazamiento manual con los dedos, todo funciona bien y el clic responde al primer toque. Simplemente me abruma.

Todo se está comportando normalmente.

Cuando inicie el desplazamiento, ScrollView reclamará eventos de toque hasta que deje de tocar la pantalla un poco. En Android 2.2, sabrás cuando el desplazamiento se considera completo, porque la barra de desplazamiento de la derecha se desvanecerá.

Tengo el mismo problema. No estoy de acuerdo con que se trata de un problema de desplazamiento de la barra de desplazamiento. Si desactiva el atenuado, sucede lo mismo.

Se han intentado varios enfoques en themes.xml:

 <item name="android:scrollbarDefaultDelayBeforeFade">100</item> <item name="android:scrollbarFadeDuration">100</item> <item name="android:fadeScrollbars">true</item> 

Pero nada ayudó. Parece que es una cosa del sistema con scrollViews. Esto podría ayudar a ver lo que está pasando:

 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..."); } }); } 

Pero eso (por desgracia) no ayuda a superar el problema, sino más bien explicarlo.

NOTA: esto sólo ocurre si utiliza ScrollView. ListView no tiene este problema.

¿Alguien tiene otra idea?

Tengo una situación como esta. Tengo un ExpandableListView, apenas se comporta normalmente. Cuando giro el teléfono móvil a horizontal y giro hacia atrás, a continuación, algunos elementos de un grupo de la ExpandableListView no responderá para el evento de clic. A menos que desplace la vista de lista, o haga clic en el elemento de grupo de estos elementos, el evento se enviará a los elementos que he hecho clic anteriormente y realizar correctamente los códigos de escucha de clics.

Esto ocurrió tanto en android 2.3 y 4.0 …

He sido capaz de solucionar esto mediante la sustitución onScrollChanged, a continuación, enviar el ScrollView un MotionEvent a través de OnTouchEvent cuando los límites se alcanzan para simular un toque de usuario.

Es la programación hackiest, más sucia que puedo imaginar, pero funciona bien en mi aplicación. Esta aplicación es para teléfonos con 2.2 sólo, y este error se necesita para ser reparado de alguna manera.

Si alguien tiene una solución mejor por favor hágamelo saber.

Editar: Este problema es sólo en 2.2 btw, lo han arreglado en 2.3, y no era un problema en 2.1.

  • Cómo agregar el botón de acción flotante en la parte superior de scrollview
  • Desplazamiento de TextView en una ScrollView a una subcadena de texto específica
  • Cómo desplazar la vista de desplazamiento horizontal sin animación
  • Actualización de contenido de ScrollView
  • Android ScrollView puede alojar sólo un hijo directo
  • Cómo poner GridView en ScrollView
  • ¿Cómo hacer ScrollView con un RelativeLayout con varios diseños de niño llenar la pantalla?
  • Detectar la parte superior de un ScrollView
  • Si ScrollView sólo admite a un hijo directo, ¿cómo se supone que puedo hacer que un diseño completo se pueda desplazar?
  • Android ScrollView no se inicia en la parte superior, pero al principio del GridView
  • Android: cómo hacer scrollview infinito con desplazamiento sin fin
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.