IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

ViewGroup : aucun enfant n'est dessiné


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut ViewGroup : aucun enfant n'est dessiné
    Bonjour

    Je désire superposer et décaler deux layouts dans un viewGroup. En me basant sur la doc
    http://developer.android.com/referen...ViewGroup.html , j'ai fait l'implémentation basique suivante :


    MainActivity.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MainActivity extends AppCompatActivity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            final ItemView view = new ItemView(this);
            setContentView(view);
        }
    }
    ItemView.java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class ItemView extends ViewGroup {
        View delayed;
        View information;
     
        public ItemView(Context context) {
            super(context);
            LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            delayed = layoutInflater.inflate(R.layout.delayed_layout, this, true);
            information = layoutInflater.inflate(R.layout.information_layout, this, true);
        }
     
        /**
         * Any layout manager that doesn't scroll will want this.
         */
        @Override
        public boolean shouldDelayChildPressedState() {
            return false;
        }
     
       @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
            final int childCount = getChildCount();
            for (int i = 0; i < childCount; i++) {
                final View childAt = getChildAt(i);
                childAt.layout(l + i * 50, t, r, b);
            }
        }
    }
    delayed_layout.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:weightSum="1">
     
        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="cancel"
            android:id="@+id/button"/>
    </LinearLayout>
    information_layout.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="This is the information layout"
            android:id="@+id/textView"/>
    </LinearLayout>
    Avec ceci, rien ne s'affiche dans l'activité.
    Qu'ai je oublié ?

    Merci
    Henri

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    J'ai coloré les fonds de delayed_layout et information_layout.
    Ces deux layouts sont affichés en des emplacements corrects mais
    ce sont leurs contenus ne sont pas affichés (boutons et TextViews)

    J'ai affiché les tailles des différents éléments :
    les layouts sont cohérents par contre, leurs enfants ont tous une taille nulle
    (left = right = top = bottom = 0 ).
    Je pensais qu'ils étaient positionné par appel récursif de la méthode layout
    de layout en layout...

Discussions similaires

  1. Ne pas lancer l'apercu s'il n'ya aucun enregistrement n'est coché
    Par Spanish_ dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 09/03/2008, 12h07
  2. Réponses: 11
    Dernier message: 21/09/2007, 15h14
  3. Réponses: 4
    Dernier message: 08/04/2007, 14h57
  4. Réponses: 1
    Dernier message: 12/03/2007, 17h58
  5. Réponses: 4
    Dernier message: 08/09/2006, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo