2013-03-17 3 views
0

У меня есть вид текста:Fit содержание TextView после изменения размеров текста

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/item_table_light_grey" 
      android:gravity="center" 
      android:orientation="vertical" > 

    <TextView 
      android:id="@android:id/text1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#000000" 
      /> 
</LinearLayout> 

При изменении размера текста с помощью кода

TextView textView = (TextView) view.findViewById(android.R.id.text1); 
textView.setTextSize(adapter.getTextSize()); 

ширину и высоту TextView не изменился, хотя размер шрифта успешно изменен , Что я делаю неправильно?

+0

Это слепая догадка, но что произойдет, если вы заставите представление перерисовываться с помощью 'textView.requestLayout();' или 'textView.invalidate();'? – Sam

+0

@ Изменение текста текста также влияет на width() и height() его textview ..? – Pragnani

+0

Ширина и высота заданы как 'wrap_content', поэтому так же, как вызов' setText() 'будет автоматически изменять ширину и высоту. Я предполагаю, что вызов 'setTextSize()' не должен требовать 'setWidth()' и 'setHeight()'. – Sam

ответ

4

Android не обновляет макет представлений с помощью «wrap_content» после его отображения.

Итак, если вы добавляете дочерний вид или динамически изменяете содержимое, вы ввернуты.

Чтобы решить эту проблему, я написал статический класс, который пересматривает размеры и заставляет обновить макет для представлений с помощью «wrap_content». Код и инструкции по использованию можно найти здесь:

https://github.com/ea167/android-layout-wrap-content-updater

Другим решением является установление фиксированных значений layout_width и layout_height, добавить гравитацию = «центр» на TextView и удалите wrap_content

Надежда помогает!

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