0
votes

Manipulation de la mise au point de VerticalGridView

ici verticalGridView (VG) va remplir certaines données. Le VG reçoit la mise au point sur la touche D-Pad en haut / bas, cela fonctionne bien. Mais le problème est que lorsque l'accent est mis sur l'élément Zeroth dans la grille et que l'utilisateur appuie sur la mise au point de Keyup D-Pad doit être défini sur l'une des visions en dehors de VG, qui est LL_Exit (ID mentionné dans le fichier XML), mais la mise au point actuellement n'est pas. aller à ladite vue. Gentiment laissez-moi savoir comment je résolvez ce problème.

J'ai essayé de configurer Android: NextFocusup = "@ id / ll_exit" mais il ne bouge pas et essayé dans le niveau d'activité pour implémenter la méthode OnKeyUp comme ci-dessous < Pré> xxx

Mais ici, le problème est quand je suis au 1er élément de VG et appuie soudainement la touche de touche, il ira à la vue que j'ai besoin de cibler. C'est ll_exit vue dans le fichier XML xxx


0 commentaires

3 Réponses :


1
votes

Essayez d'ajouter les attributs XML suivants à la vue Linearlayout LL_EXIT

android:focusable="true"
android:focusableInTouchMode="true"


2 commentaires

J'ai essayé en ajoutant ces attributs dans le fichier XML, mais il n'est inutile. Le problème est que la mise au point est de la vue extérieure à l'adaptateur de la vue Recycler, mais si je veux recevoir la concentration sur la vue extérieure sur la touche, appuyez sur, il ne se passe pas


Mettez le code que vous avez publié dans la méthode OnKeyUp dans la méthode ONKEYDOWN au lieu de l'embarras. Cela pourrait fonctionner.



0
votes

Manières possibles: essayez de régler la linearlayout ll_toolbar vers xxx pré>

ou essayer: p> xxx pré>

si aucune solution ne fonctionne, il suffit de verticalgridview comme ça p>

public class SampleVerticalGridView extends VerticalGridView implements FocusInterceptor{


    private static final String TAG = "SampleVerticalGridView";
    private View focusUp;
    private View focusDown;

    // constructors and stuff
    ...

    public void setNextFocusViews(View focusUp, View focusdown) {
        this.focusUp = focusUp;
        this.focusdown = focusdown;
    }

    @Override
    public View focusSearch(View focused, int direction) {
        if (direction == View.FOCUS_UP && focusUp != null) {
            return focusUp;
        } else if (direction == View.FOCUS_DOWN && focusDown != null) {
            return focusDown;
        }
        return super.focusSearch(focused, direction);
    }

    ...
}


0 commentaires

0
votes

Essayez d'ajouter les attributs XML suivants au VG

app:focusOutEnd="true"
app:focusOutFront="true"


0 commentaires