Android ImageView stimmt in FrameLayout unterhalb von GingerBread nicht überein

8

Ich versuche eine Sprechblase für einen Chatroom zu erstellen. Jede der Sprechblasen hat das beigefügte XML-Layout.

Ich erreiche dies, indem ich die textView auf wrap_content , die Sprechblase imageView auf match_parent und die frame_layout bis wrap_content . Damit das rede_bubble Bild hinter dem Text skaliert entsprechend der Menge an Text in der Sprechblase.

Ich setze die Breite der textView so, dass sie dem übergeordneten Element und die Höhe von wrap_content entspricht und aus irgendeinem Grund funktioniert perfekt wie in Ice Cream Sandwich (Android 4.1) erforderlich . In Gingerbread ist die innere imageView-Sprechblase jedoch nicht auf match_parent skalierbar, so dass der Text genau in die Blase passt. In Gingerbread bleibt die innere imageView immer gleich groß , unabhängig vom Text und dem Textüberlauf außerhalb der Bubble . Obwohl das frameLayout auf wrap_content erweitert wird, stimmt das imageView nicht mit dem match_parent überein.

Irgendwelche Ideen, warum das passiert? Gibt es einen anderen Parameter, den ich durch xml oder eine Methode setzen kann, die ich programmatisch aufrufen kann, um das zu beheben?

Danke!

Korrektes Verhalten in ICS:

Korrektes Verhalten in ICS

Falsches Verhalten in GingerBread: Falsches Verhalten in GingerBread

XML-Layout:

%Vor%     
Bala 15.09.2012, 05:23
quelle

1 Antwort

24

Aus Ihrer Sicht wird dies durch eine zirkuläre Abhängigkeit in Ihren Größen verursacht: Die innere Text- und Bildgröße hängt von der FrameLayout ( match_parent ) ab, während die FrameLayout-Größe davon abhängt, was darin enthalten ist (% Code%). Von der Verwendung eines FrameLayouts wird abgeraten, wenn mehr als ein Kind aus genau diesem Grund beteiligt ist. Aus Sicherheitsgründen würde ich empfehlen, wrap_content auf FrameLayout zu ändern und die folgende Eigenschaft für die innere Bildansicht festzulegen:

%Vor%

Damit wird sichergestellt, dass Ihr Bild immer der Größe Ihres Textes entspricht.

    
Xono 15.09.2012, 05:34
quelle