2010-08-05 4 views
0

Comment puis-je savoir quelle vue enfant est affichée sur l'écran actuel de l'appareil, dans une vue défilante? Je souhaite créer une application Ruler infinie. Je dois donc ajouter et supprimer dynamiquement des vues lorsque la vue est inversée, mais comment et où puis-je trouver quelle vue enfant est affichée sur l'écran actuel du périphérique, donc je peux ajouter ou supprimer la vue correcte lorsque je reçois que childview a changé notifier?Comment puis-je savoir quelle vue enfant est affichée sur l'écran actuel du périphérique dans une vue de défilement?

Ou, quelqu'un peut-il me donner une autre idée pour réaliser cette fonction?

Répondre

0

Utilisez scrollView.getScrollY() pour déterminer la distance de défilement du point de défilement et comparez-le aux hauteurs des vues enfant (en les additionnant au fur et à mesure) pour voir lequel doit apparaître à l'écran.

+0

grâce getScrollY() peut-être raison. Je viens de trouver anyview avoir la fonction scrollTo(), alors maintenant j'utilise immédiatement lineanerlayout ScrollView – user411475

1

J'ai rencontré ce problème aussi. vous pouvez appeler la fonction getlocalonscreen pour obtenir la coordonnée de vue. par exemple:

1.

view.getlocaloncreen(xy);// xy[0] is x axis, xy[1] is y axis. 

2.

int nScreenWid = getwindowsmanager().getdefaultdisplay().getwidth(); 
int nScreenHei = getwindowsmanager().getdefaultdisplay().getHeight(); 

3.

if(xy[0] > nscreenWid) 
{ 
    // your view is beyond the x axis. 
} 
if(xy[1] > xxxxhei) 
{ // beyond y axis }