Je crée par programme une vue dans Android . La disposition parent est RelativLlayout
et j'y ajoute deux vues. La première est ListView
et la deuxième est la vue personnalisée. Je souhaite que ma deuxième vue personnalisée arrive en tête de liste, mais elle est en train de se cacher derrière la ListView
. Comment puis-je m'assurer que ma vue personnalisée est au top.
Les vues sont placées dans l'ordre dans lequel vous les ajoutez à leurs vues parent. La vue ajoutée en dernier sera au top. Vous pouvez également essayer View.bringToFront()
http://developer.Android.com/reference/Android/view/View.html#bringToFront ()
Essayez d'utiliser: View.bringToFront();
Solution 1 - Voir # bringToFront ()View.bringToFront()
devrait fonctionner s'il était utilisé correctement. Peut-être avez-vous oublié ceci (source: http://developer.Android.com/reference/Android/view/View.html#bringToFront () ):
Avant KitKat, cette méthode devrait être suivie d'appels à requestLayout () et invalidate ()
Solution 2 - Refixez la vue
Si View.bringToFront()
ne fonctionnera pas, essayez de supprimer et d'ajouter de nouveau la vue. L'avantage est qu'il a le même code sur les versions antérieures à KitKat.
Je le fais de cette façon dans mon code:
ViewGroup parentView = (ViewGroup) (listView.getParent());
parentView.removeView(addFab);
parentView.addView(addFab);
Utilisez FrameLayout, la disposition du cadre montre la dernière vue ajoutée en haut.
Essaye ça :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >
<ListView
Android:id="@+id/list"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
<YourCustomView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true" />
</RelativeLayout>
Encore une fois: les vues sont placées dans la mise en page dans l'ordre dans lequel vous l'ajoutez. La question est: est-il vraiment caché ou ne rend-il pas?. Recherchez les erreurs dans LogCat et la console. Si vous ajoutez uniquement cette vue personnalisée unique à votre mise en page, le rendu est-il effectué sans aucun problème? Si tel est le cas, assurez-vous d’ajouter réellement votre personnalisation à la même vue parent (groupe), tout en ajoutant votre ListView. Si vous n'allez pas plus loin, fournissez un exemple de code.
J'ai utilisé la disposition relative et l'ordre des vues détermine en quelque sorte laquelle se trouve en haut.
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1">
<SeekBar
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:splitTrack="false"
Android:layout_alignParentTop="true"
/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"/>
Dans cette mise en page, la vue de texte sera au-dessus de la barre de recherche
Créez la vue parent en tant que disposition relative et ajoutez vos deux vues au format xml.Il ne fonctionnera pas pour la disposition linéaire . Et ajoutez ensuite FirstView.bringToFront () par programmation.
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@mipmap/bg"
Android:orientation="vertical"
Android:padding="15dp">
<ImageView
Android:id="@+id/imgIcon"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:layout_gravity="center"
Android:layout_marginBottom="-30dp"
Android:layout_marginTop="30dp"
Android:src="@mipmap/login_logo" />
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_below="@id/imgIcon"
Android:layout_gravity="bottom"
Android:background="#B3FFFFFF"
Android:gravity="center"
Android:orientation="vertical"
Android:paddingLeft="10dp"
Android:paddingRight="10dp">
<View 1/>
<View 2/>
</LinearLayout>
Java file
imgIcon.brigtToFront();
Cela fonctionne pour moi:
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="match_parent"
Android:layout_height="220dp"
Android:gravity="bottom"
Android:orientation="vertical"
Android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
Android:id="@+id/details_wrapper"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:paddingBottom="16dip"
Android:scaleType="centerCrop"
Android:src="@drawable/temp_nav_image">
</ImageView>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
Android:orientation="vertical">
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingTop="@dimen/nav_header_vertical_spacing"
Android:text="Kapil Rajput"
Android:textStyle="bold"
Android:textColor="@Android:color/black"
Android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>
<TextView
Android:id="@+id/textView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="@Android:color/black"
Android:textStyle="bold"
Android:text="[email protected]"/>
</LinearLayout>
</RelativeLayout>
ce que vous devriez faire, c'est utiliser Android:layout_below
ou Android:layout_above
par programmation. alors vous devriez faire ceci:
RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.below_id);
viewToLayout.setLayoutParams(params);
et je vous suggère jetez un oeil à cette réponse
j'espère que cela t'aides