Если у меня есть 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-кодов:
Любой имел некоторые подобные опыты?
Примечание: Просто чтобы быть ясно, каждый раз, когда раскладка была обернута внутри этого (верхняя компоновка):
android:layout_width="fill_parent"
android:layout_height="fill_parent"
с XML версия = "1.0" кодирование = "UTF-8" и надлежащее Пространство имен.
На самом деле, в чем проблема? Ваш код, похоже, работает так, как предполагается. –
TextView находится внутри LinearLayout, так почему он растягивает LinearLayout? – Droidamature