2010-08-21 5 views
0

Если у меня есть 2 LinearLayouts split% 50 /% 50, все в порядке. Вес 1 и 1. Как только я добавляю TextView внутри верхнего LinearLayout, он растягивает этот макет. Я использую «wrap_content», поскольку в документации говорится, что мне нужно, когда дело касается веса. Поскольку вы можете видеть, что красный и зеленый цвета должны быть разделены равномерно, а текст на сером фоне должен быть внутри красного квадрата. Вот код:TextView внутри LinearLayout растягивает LinearLayout и fill_parent фиксирует причину потери веса

<LinearLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:background="#ff0000" 
> 
<TextView 
android:text="@string/hello" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#cccccc" 
android:textColor="#000000"/>  
</LinearLayout> 


<LinearLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:background="#00ff00" 
> 
</LinearLayout>  

Теперь, если я переключусь на «заполнить родительский», как это происходит, он действительно работает, но это создает еще одну проблему. Вот код (до сих пор так хорошо):

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="#ff0000" 
    > 
    <TextView 
    android:text="@string/hello" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#cccccc" 
    android:textColor="#000000"/>  
    </LinearLayout> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:background="#00ff00" 
    > 
    </LinearLayout> 

Так, глядя на выше, мы были вынуждены использовать «fill_parent» и мы будем думать, как мы исправили эту проблему, но здесь проблема, если мы используем «fill_parent "(я вынул TextView, чтобы показать проблему, TextView не делает проблему уйти в любом случае):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="3" 
    android:background="#ff0000" 
    > 
    </LinearLayout> 


<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="2" 
    android:background="#00ff00" 
    > 
    </LinearLayout> 
</LinearLayout> 

Как вы можете видеть, что я назначить веса 3 (верхний красный) и 2 (нижний зеленый), но то, что на самом деле происходит, они перевернуты: красный цвет становится 2, а нижний - 3. Просто измерьте пиксели тоже.

Вот результаты 3-кодов:

http://imgur.com/iVt8g.jpg

Любой имел некоторые подобные опыты?

Примечание: Просто чтобы быть ясно, каждый раз, когда раскладка была обернута внутри этого (верхняя компоновка):

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

с XML версия = "1.0" кодирование = "UTF-8" и надлежащее Пространство имен.

+0

На самом деле, в чем проблема? Ваш код, похоже, работает так, как предполагается. –

+0

TextView находится внутри LinearLayout, так почему он растягивает LinearLayout? – Droidamature

ответ

0

Попробуйте добавить дочерний вид в нижнюю компоновку.

1

Комбинированные веса детского вида должны составлять до 1 ..... Например. .3, .3, .4 = 1 или 100%

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