Изображение не отображается, когда оно в последний раз в LinearLayout - PullRequest
2 голосов
/ 24 ноября 2011

Это озадачило меня на два дня.У меня есть LinearLayout, как показано ниже:

        <LinearLayout
                android:background="@drawable/rounded_rect_wht_bg"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent"
                android:orientation="horizontal"
                android:layout_margin="5dp"
                android:minHeight="30dp"
                android:padding="5dp"
                android:visibility="gone">
            <ImageView
                    android:id="@+id/timage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="5dp"
                    android:layout_marginRight="10dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginBottom="5dp"
                    android:scaleType="fitXY"
                    />
            <TextView
                    android:id="@+id/tname"
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:layout_marginRight="5dp"
                    android:textColor="@android:color/black"
                    android:textSize="13sp"
                    android:textStyle="bold"/>
            <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="5dp"
                    android:src="@drawable/ticon" />
        </LinearLayout>

Последний ImageView (ticon) не отображается.Я вижу только timage и tname.Но если я переключил это:

<LinearLayout>
        <ImageView android:src="@drawable/ticon" />
        <ImageView android:id="@+id/timage" />
        <TextView android:id="@+id/tname" />
</LinearLayout>

Это там.Что здесь происходит?

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Возможно, содержимое вашего TextView выталкивает ImageView. Попробуйте использовать layout_weight = "1", чтобы распределить все оставшееся пространство для TextView.

0 голосов
/ 24 ноября 2011

Поскольку вы определяете layout_height вашего TextView как "fill_parent", он займет оставшееся пространство. Вот почему он показывает правильно, если он объявлен последним: изображения используют только необходимое им пространство (layout_height = "wrap_content").

В зависимости от того, что вы хотите сделать, вы можете попробовать установить layout_height для TextView равным "wrap_content" или, если вы хотите, чтобы TextView занимал пространство между изображениями, я бы предложил вам использовать RelativeLayout:

<RelativeLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     ...>
     <ImageView
          android:id="@+id/timage"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          ...
          android:layout_alignParentTop="true" />
     <ImageView
          android:id="@+id/ticon"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          ...
          android:layout_alignParentBottom="true" />
     <TextView
          android:id="@+id/tname"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          ...
          android:layout_below="@+id/timage"
          android:layout_above="@+id/ticon" />
</RelativeLayout>
...