TextView внутри LinearLayout растягивает LinearLayout, а исправление fill_parent вызывает изменение веса - PullRequest
0 голосов
/ 21 августа 2010

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

Как видите, красный и зеленый должны быть разделены равномерно, а текст на сером фоне должен быть внутри красной рамки. Вот код:

<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 version="1.0" encoding="utf-8" и соответствующим пространством имен.

Ответы [ 2 ]

1 голос
/ 19 декабря 2010

Общий вес дочернего вида должен составлять до 1 ..... Например..3, .3, .4 = 1 или 100%

0 голосов
/ 21 августа 2010

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

...