web-dev-qa-db-fra.com

Utilisation de layout_above dans RelativeLayout

Quelqu'un peut-il m'expliquer pourquoi ImageView n'apparaît pas au-dessus de LinearLayout?

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <LinearLayout
        Android:id="@+id/rev_main"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content">
        <!-- some stuff in here -->
    </LinearLayout>
    <ImageView
        Android:id="@+id/rev_arrow"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/arrow"
        Android:layout_above="@id/rev_main"
        />
</RelativeLayout>

Je ne comprends pas.

20
Andrew

Cela se produit lorsque vous spécifiez un alignement par rapport à un autre modèle. La solution que j'ai trouvée était d'aller dans l'autre sens.

Au lieu d'indiquer à ImageView d'être au-dessus de LinearLayout, indiquez à LinearLayout d'être sous ImageView.

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <LinearLayout
        Android:id="@+id/rev_main"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/rev_arrow">
        <!-- some stuff in here -->
    </LinearLayout>
    <ImageView
        Android:id="@+id/rev_arrow"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/arrow"
        />
</RelativeLayout>
24
Error 454

Ce qui suit devrait fonctionner pour vous:

<RelativeLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <ImageView
        Android:id="@+id/rev_arrow"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/arrow"
        Android:layout_alignParentTop="true"
        />
    <LinearLayout
        Android:id="@+id/rev_main"
        Android:layout_width="fill_parent"
        Android:layout_below="@id/rev_arrow"
        Android:layout_height="wrap_content">
        <!-- some stuff in here -->
    </LinearLayout>
</RelativeLayout>
7
Joseph Earl

J'ai eu un problème similaire en créant un optionsMenu personnalisé. Le moyen le plus simple de définir l'ordre des vues dans l'ordre z était de le faire par programme. Si vous voulez changer l'ordre parfois, vous devriez appeler facilement:

    ImageView yourImageView = (ImageView)findViewById(R.id.rev_arrow);
    yourImageView.bringToFront();

Je ne sais pas si cela s’adapte à votre application, mais dans mon cas, cela fonctionne parfaitement. Si vous avez besoin de plus de code, faites le moi savoir.

1
Opiatefuchs

Si vous avez un tel problème dans ListView, assurez-vous d'utiliser la méthode de gonflage appropriée. Le groupe de vues parent doit être spécifié pour une inflation correcte.

mLayoutInflater.inflate(R.layout.listitem, parent, false);

Ne pas utiliser  

mLayoutInflater.inflate(R.layout.listitem, null);
0
Aleksey Masny