2010-11-26 6 views
0

Ich habe seit einigen Tagen damit zu kämpfen und mir gingen die Ideen aus.Android ImageView erstreckt sich nicht vertikal in der ListView Zeile

In meiner Listenansicht kann jede Zeile einen vertikalen Balken haben, der je nach Status eine andere Farbe hat. Dieser "Balken" hat keinen anderen Zweck als die visuelle Darstellung des Status und ist nicht anklickbar.

Ich habe den vertikalen Balken mit einem ImageView mit Hintergrund auf ein Zeichen gesetzt, das die gewünschte Farbe hat. Das Problem ist, dass der vertikale Balken nicht dehnt, es ist nur 1 Pixel hoch, obwohl ich fill_parent angegeben habe.

Die Reihe Layout ist wie folgt:

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

    <ImageView 
     android:id="@+id/id1" 
     android:scaleType="fitXY" 
     android:layout_width="5dp" 
     android:layout_height="fill_parent" 
     android:background="@drawable/d1" /> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/id1"> 
... 

(Verlassen Inhalt des zweiten relativen Layout heraus Zweck der Einfachheit halber)

Meine ziehbar d1 wie folgt aussieht:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="@color/c1" /> 
    <corners android:topRightRadius="5dip" android:bottomLeftRadius="5dip" /> 
</shape> 

So,

  1. Warum erstreckt sich das ImageView nicht vertikal?
  2. Gibt es eine bessere Möglichkeit, dies als mit einem ImageView zu implementieren? (I versucht, eine einfache Ansicht mit einem Hintergrundfarbe, aber es zeigt nicht überhaupt oben)

Jede Hilfe sehr geschätzt. Danke

Antwort

1

Als Erstes können Sie auch hier ein horizontales LinearLayout anstatt eines RelativeLayout verwenden (da Sie sowieso nur zwei Kinder haben, sparen Sie nicht wirklich Layoutkomplexität wie Sie es benutzen).

Das Ändern in ein LinearLayout könnte dies beheben, aber ich vermute, dass Sie möglicherweise ein spezifisches Problem haben, wenn es darum geht, die Höhe von aufgeblasenen RelativeLayouts als Zeilen anzupassen; siehe die Kommentare zu der Antwort auf diese SO question und this SO question.

+0

Ich hatte ein relatives Layout, da es tatsächlich eine Textansicht über dem Objekt gibt, die ich weggelassen habe, um die XML für diesen Beitrag kurz zu halten. Ich habe die Posts von den Links gelesen, die Sie mir gegeben haben, und ich verwende bereits die korrekte Art, die Ansicht aufzublasen. Ich werde jedoch versuchen, das relative Layout durch mehrere LinearLayouts zu ersetzen, um zu sehen, ob das Problem behoben ist. –

+0

Danke Yoni, dass er mich auf diese wertvollen SO-Threads hingewiesen hat. Das Ersetzen des Stammes RelativeLayout durch ein LinearLayout hat das Problem behoben. Ich bin mir nicht sicher, ob ich ein großer Fan dieser Lösung bin, da dies die Layout-Hierarchie komplexer als nötig macht, aber das könnte der einzige Weg sein, um es zum Laufen zu bringen. Ein Käfer? –

Verwandte Themen