Impossible de dessiner des vues sur les enfants en groupe View lors de l'utilisation d'AdapterView

StackOverflow https://stackoverflow.com/questions/9521034

Question

J'essaie d'obtenir un AdaptorView pour dessiner correctement ses vues d'enfant, mais j'ai du mal à obtenir les vues de l'enfant sur les vues renvoyées par l'adaptateur pour dessiner. Plus précisément, mon adaptateur devrait cracher des vues simples comme celle-ci:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF">

        <TextView
            android:id="@+id/photo_cell_contents"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10px" 
            android:text="@string/photo_cell_default_text" 
            android:textColor="#000000" 
            android:textSize="80px"/>

</LinearLayout>

La méthode GetView () de l'adaptateur est invoquée et renvoie en effet les instances de cette vue sur AdapterView. J'ai également mis des points d'arrêt dans mon AdapterView et je peux voir qu'il existe une hiérarchie de vue appropriée - la disposition linéaire racine avec un objet Child TextView. Cependant, lorsque la vue de l'adaptateur se présente et dessine les vues de l'enfant renvoyées par l'adaptateur, les TextViews internes ne sont pas dessinés. Je vois les boîtes colorées réelles correspondant à chaque cellule, mais pas le texte qui devrait apparaître à l'intérieur. Quelqu'un a-t-il une idée de la raison pour laquelle cela pourrait se produire? Vous trouverez ci-dessous le code dans la méthode onLayout () de la vue de l'adaptateur qui présente les vues de l'enfant (qui sont ajoutées lorsque je metadapter () et me ferai du mise à jour lorsque je fais défiler l'adaptorat):

    for (int idx = 0; idx < this.getChildCount(); idx++) {
        if (idx != dragged)
        {
            Point xy = getCoorFromIndex(idx);
            View child = getChildAt(idx);
            child.layout(xy.x, xy.y, xy.x + childSize, xy.y + childSize); //view group will layout the children based on the sizes determined for available columns
            int left = child.getLeft();
            int right = child.getRight();
            int top = child.getTop();
            View tv = ((ViewGroup)child).getChildAt(0);
            int tvleft = tv.getLeft();
            int tvright = tv.getRight();
            int tvtop = tv.getTop();

            Log.i("dgv", "Here is info about main view ... left =  " + left + "; right = " + right + "; top = " + top);
            Log.i("dgv", "Here is info about text view ... left =  " + tvleft + "; right = " + tvright + "; top = " + tvtop);


        }
    }
Était-ce utile?

La solution

Le problème était que je devais à la fois mesurer et disposer les vues de l'enfant dans ma méthode de mise en page pour la vue de l'adaptateur. Après avoir ajouté du code pour mesurer la vue de l'enfant, puis appeler child.layout (), les vues s'affichent correctement. J'espère que cela t'aides.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top