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.
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>
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>
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.
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);