2016-08-07 1 views
0

Je développe une application Android. Dans mon application, j'essaie de superposer une image. Mais la taille de la vue dans une mise en page relative est toujours nulle avec et height même je mets match_parent à la fois la largeur et la hauteur. S'il vous plaît voir mon scénario ci-dessous.Voir la largeur et la hauteur est toujours zéro dans RelativeLayout dans Android

Ceci est mon XML mise en page

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_marginTop="5dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_width="match_parent" 
    android:id="@+id/di_card_container" 
    android:layout_height="wrap_content"> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ImageView 
      android:id="@+id/di_iv_image" 
      android:scaleType="centerCrop" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <RelativeLayout 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentBottom="true" 
      android:id="@+id/di_name_container" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <View 
       android:layout_centerInParent="true" 
       android:background="@color/blue" 
       android:id="@+id/destination_item_overlay" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 
      <TextView 
       android:padding="10dp" 
       android:textSize="15dp" 
       android:textColor="@color/white" 
       android:id="@+id/di_tv_name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
     </RelativeLayout> 
    </RelativeLayout> 
</android.support.v7.widget.CardView> 

Ceci est le résultat

enter image description here

Comme vous pouvez le voir, il n'y a pas de fond de couleur bleue pour le nom car la largeur et la hauteur de vue en rapport la disposition est nulle. Mais si je définis explicitement la largeur et la hauteur comme ci-dessous, cela fonctionne.

<View 
        android:layout_centerInParent="true" 
        android:background="@color/blue" 
        android:id="@+id/destination_item_overlay" 
        android:layout_width="300dp" 
        android:layout_height="30dp"/> 

Mais ce n'est pas compatible avec tous les appareils. Pourquoi avec et la hauteur est toujours zéro? J'ajoute cette vue car j'ai besoin de contrôler par programme cette vue. Comment puis-je définir la largeur et la hauteur de cette vue en arrière-plan pour correspondre au parent?

Répondre

2

C'est parce que vous avez une dépendance circulaire. Le <RelativeLayout> demande à son enfant de dire la hauteur et le <View> dit à son parent de le faire aussi grand que lui-même. Si nous fixons la hauteur, nous pouvons résoudre le problème immédiatement.

Essayez ceci ici:

 <RelativeLayout 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentBottom="true" 
      android:id="@+id/di_name_container" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <View 
       android:layout_centerInParent="true" 
       android:background="@color/blue" 
       android:id="@+id/destination_item_overlay" 
       android:layout_width="match_parent" 
       android:layout_alightTop="@id/di_tv_name" 
       android:layout_alightBottom="@id/di_tv_name" 
       android:layout_height="match_parent"/> 
      <TextView 
       android:padding="10dp" 
       android:textSize="15dp" 
       android:textColor="@color/white" 
       android:id="@+id/di_tv_name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
     </RelativeLayout> 
+0

Merci beaucoup. Cela a fonctionné parfaitement. –

+0

Cool. Heureux d'avoir pu aider – Shaishav