2013-12-14 4 views
0

Текстовое изображение не отображает текст правильно. Текст охватывает две строки, но вторая строка текста показывает только верхнюю половину текста, как если бы текст был разрезан на две половины по горизонтали, несмотря на использование height = wrap_content.TextView не отображается правильно в макете таблицы

код XML:

<TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="15dp" 
     android:weightSum="1" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.4" 
      android:text="No. of direct Reportees:" /> 

     <EditText 
      android:id="@+id/direct" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.6" 
      android:hint="Eg. 12" 
      android:inputType="numberDecimal" 
      android:textAppearance="?android:attr/textAppearanceSmall" > 

      <requestFocus /> 
     </EditText> 
    </TableRow> 

РЕШИТЬ:

Такое поведение обусловлено базовой линии выравнивания. Контейнер имеет правильную высоту (это максимум двух его детей), но Textview сдвигается вниз, чтобы быть базовой, выровненной с кнопкой. Это поведение не может быть изменено для сохранения макетов в существующих приложениях. Правильный способ реализации этого макета в вашем случае - добавить android:baselineAligned="false" в тег LinearLayout. Это также избавит вас от лишнего вертикального пространства выше TextView.

ответ

0

Такое поведение обусловлено выравниванием базовой линии. Контейнер имеет правильную высоту (это максимум двух его детей), но Textview сдвигается вниз, чтобы выровняться по базовой линии с кнопкой. Это поведение не может быть изменено для сохранения макетов в существующих приложениях. Правильный способ реализации этого макета в вашем случае - добавить android: baselineAligned = "false" в теге LinearLayout. Это также избавит вас от лишнего вертикального пространства над TextView.

1

Поместите TextView и EditText внутри LinearLayout, чтобы сделать вес атрибут работы:

<TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="15dp"> 
<LinearLayout 
     android:id="@+id/table_row_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 
     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.4" 
      android:text="No. of direct Reportees:" /> 

     <EditText 
      android:id="@+id/direct" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.6" 
      android:hint="Eg. 12" 
      android:inputType="numberDecimal" 
      android:textAppearance="?android:attr/textAppearanceSmall" > 

      <requestFocus /> 
     </EditText> 
</LinearLayout> 
</TableRow> 
+0

Ошибка: Подозрительный размер: это сделает вид невидимым, возможно, предназначенным для layout_height – Jimmy

+0

, у вас не должно быть match_parent внутри wrap_content. В то же время я думаю, что вес работает и в таблице. –

+0

вес работал хорошо ранее .. – Jimmy

0

Попробуйте this-

<TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.4" 
     android:text="No. of direct Reportees:" /> 

    <EditText 
     android:id="@+id/direct" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.6" 
     android:hint="Eg. 12" 
     android:inputType="numberDecimal" 
     android:textAppearance="?android:attr/textAppearanceSmall" > 

     <requestFocus /> 
    </EditText> 
</TableRow> 

Source-

http://www.chess-ix.com/blog/the-use-of-layout_weight-with-android-layouts/

+0

вес работает с шириной, установленной на 0dp –

+0

ok. если мы удалим вес, это работает? –

+0

Мне нужны весы ... не могу удалить его – Jimmy

0

Я думаю, что высота присваивается текстуру перед шириной.

Как и из-за веса, ширина рассчитывается во время рендеринга.

Таким образом, по времени ширина назначается высоте текстового поля.

Я думаю, что если текст в этом текстовом представлении будет статическим, попробуйте дать ему твердую кодированную высоту.

+0

жестко закодированные значения работают, но ищут лучшее решение ... – Jimmy

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