8

Sto cercando di creare un fumetto per una chat room. Ciascuno dei fumetti ha il layout xml allegato.Android ImageView non corrisponde_parente all'interno di FrameLayout sotto GingerBread

sto raggiungere questo impostando il textView a wrap_content, fumetto ImageView a match_parent e la frame_layout a wrap_content. In modo che l'immagine speech_bubble dietro il testo ridimensiona in base alla quantità di testo nella bolla.

ho impostare la larghezza del textView per abbinare genitore e l'altezza a wrap_content e per qualche motivo, si funziona perfettamente come richiesto Ice Cream Sandwich (Android 4.1). Tuttavia in Gingerbread il fumetto interno imageView non viene ridimensionato a match_parent in modo che il testo possa adattarsi perfettamente all'interno della bolla. In Gingerbread l'immagine internaView rimane sempre della stessa dimensione, indipendentemente dal testo e dal testo fuoriuscita dalla bolla. Anche se il frameLayout si espande per wrap_content, il ImageView non match_parent come si suppone.

Qualche idea sul perché questo sta accadendo? C'è un altro parametro che posso impostare tramite xml o un metodo che posso chiamare a livello di codice per risolvere questo problema?

Grazie!

comportamento corretto in ICS:

Correct Behavior in ICS

Comportamento non corretto in GingerBread: Layout Incorrect Behavior in GingerBread

XML:

<merge xmlns:android="http://schemas.android.com/apk/res/android"> 
     <FrameLayout 
            xmlns:android="http://schemas.android.com/apk/res/android" 
            android:id="@+id/speech_bubble_framelayout" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:orientation="horizontal" 
            android:background="@color/color_transparent" 
            android:layout_toRightOf="@id/message_user_imageView"> 

        <ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
                   android:id="@+id/message_background_imageview" 
                   android:layout_width="match_parent" 
                   android:layout_height="match_parent" 
                   android:layout_margin="5dp" 
                   android:scaleType="fitXY" 
                   android:layout_centerInParent="true" 
                   android:textColor="@color/color_brown_mud" 
                   android:background="@drawable/chat_bubble_flipped" 
                /> 
        <TextView 
                android:id="@+id/message_textView" 
                android:layout_width="wrap_content" 
                android:layout_height="match_parent" 
                android:maxEms="10" 
                android:background="@color/color_transparent" 
                android:textColor="@color/color_brown_uiDesign_pallete" 
                android:textSize="15sp" 
                android:textStyle="bold" 
                android:gravity="center_horizontal" 
                android:text="Message" 
                android:padding="5dp" 
                android:layout_marginLeft="25dp" 
                android:layout_marginRight="20dp" 
                android:layout_marginTop="15dp" 
                android:layout_marginBottom="15dp" 
                /> 
    </FrameLayout> 
</merge> 

risposta

24

Dagli sguardi di esso, questo è causato da un dipendenza circolare delle dimensioni: il testo interno e la dimensione dell'immagine dipendono dal FrameLayout (match_parent), mentre la dimensione di FrameLayout dipende da cosa è contenuta al suo interno (wrap_content). L'uso di FrameLayout è sconsigliato quando più di un bambino è coinvolto esattamente per questo tipo di motivo. Per la sicurezza, io consiglierei di cambiare la FrameLayout ad un RelativeLayout, e impostando la seguente proprietà sulla visualizzazione dell'immagine interna:

android:layout_alignTop="@+id/message_textview" 
android:layout_alignBottom="@+id/message_textview" 

Questo assicurerà la vostra immagine corrisponda sempre fino alla dimensione del testo.

+0

Questo ha risolto il problema. Ho usato alignBottom e alignRight con un po 'di padding. Grazie! – Bala

Problemi correlati