2013-04-19 6 views
1

У меня есть простой макет и наложен на разницу между Jelly Bean и Froyo. На Jelly Bean у меня ImageView соответствует его родительскому (FrameLayout) по высоте. Но на Фройо это не так. Пожалуйста, посмотрите на структуру макета:ImageView match_parent для Jelly Bean и Froyo

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

    <FrameLayout 
     android:id="@+id/fl" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:id="@+id/image_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/profile_data_background_im" 
      android:scaleType="fitXY"/> 

     <LinearLayout 
      android:id="@+id/ll" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:orientation="vertical"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Test text"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Test text"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Test text"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Test text"/> 

     </LinearLayout> 

     </FrameLayout> 

</LinearLayout> 

Так что я на Jelly Bean (и это, как ожидается):

enter image description here

Вот что я имею на Froyo:

enter image description here

Просьба сообщить, как получить ImageView, чтобы заполнить свой родитель, как для Jelly Bean. Большое спасибо.

+0

Во-первых, ваши скриншоты из предварительного просмотра Eclipse, что не особенно актуально. Тестирование с использованием эмуляторов или устройств. Во-вторых, когда вы запускали Hierarchy View, чтобы взглянуть на размер вашего «ImageView», что вы узнали? – CommonsWare

+2

Это ошибка; [см. здесь, также для обходного пути] (http://stackoverflow.com/q/15780884/1856738) –

+0

Марк, я протестировал на реальных устройствах, я только что снял снимки экрана из IDE. Я не проверял с помощью Hierarchy View, я сделаю это. – Eugene

ответ

1

Я встретил это самое явление только недавно. Посмотрев на источник Android и подклассифицирующий вид, чтобы увидеть, какие значения FrameLayout передадут его дочерним элементам, стало очевидно, что это ошибка.

См. Здесь полный ароматизированный description и workaround.

Meta примечания: Спасибо, StackOverflow рецензентов для голосования для преобразования моего первоначального ответа на комментарий, а затем против маркировки этого вопроса как дубликат. Вот что вы получаете за это. ;)

+0

Большое спасибо. – Eugene

+0

@silk Glad Я мог бы помочь. –

0

Установите FragmentLayoutlayout_height на номер match_parent.

Ваш код XML должен быть ниже

<FrameLayout 
     android:id="@+id/fl" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
+0

Нет, мне нужно, чтобы это было «wrap_content», потому что это всего лишь часть более сложного макета. – Eugene

+0

Это приведет к растянутому фону для полного экрана. – WarrenFaith

+0

Проблема в том, что мне не нужно растягиваться для полного экрана, но для части. – Eugene

0

Почему вы не положить, что profile_data_background_imDrawable в качестве фона для вашего @+id/llLinearLayout? Странное сочетание макетов в любом случае.

+0

Потому что я использую более сложное решение здесь, стороннюю библиотеку, чтобы иметь ImageView с закругленными углами и черепичным фоном. – Eugene

Смежные вопросы