Android:缩小字体大小后,TextView高度不会改变

当我点击button时,字体大小缩小为12.但是,结果是:

在这里输入图像说明

main.xml中

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40sp" android:background="#80ff0000" android:text="@string/hello" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout> 

Java的:

 public class FontSizeTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView text = (TextView) findViewById(R.id.test); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { text.setTextSize(12); } }); } } 

我如何缩小textView的高度,以便它只包裹实际的字体?

Solutions Collecting From Web of "Android:缩小字体大小后,TextView高度不会改变"

所以,经过漫长的search,我find了一个解决scheme。 每次你设置文字做:

 setText("I am a Text",TextView.BufferType.SPANNABLE); 

或者在调整文字大小之后

 setText(getText(),TextView.BufferType.SPANNABLE); 

最后,我find了原因/解决scheme!

这是Android 3.1以上的已知错误

问题17343

问题22493

可能的解决方法是:

 text.setText(text+"\n"); 

要么

 final String DOUBLE_BYTE_SPACE = "\u3000"; text.setText(text + DOUBLE_BYTE_SPACE); 

而不是使用:

 final String DOUBLE_BYTE_SPACE = "\u3000"; text.setText(text + DOUBLE_BYTE_SPACE); 

更好地使用:

 final String DOUBLE_BYTE_WORDJOINER = "\u2060"; text.setText(text + DOUBLE_BYTE_WORDJOINER); 

额外信息:Word Joiner是0宽度空间。

我发现添加字符“\ u200b”不会显示为破碎的字符,也不会添加空格/换行符。

有关“零宽度空间”的更多详细信息,请参阅: http : //www.fileformat.info/info/unicode/char/200b/index.htm

尝试调用invalidate()或invalidate()的变体。 来自android开发人员的文档:

public void invalidate()

从以下版本开始:API级别1使整个视图无效。 如果视图是可见的,onDraw(android.graphics.Canvas)将在未来某个时候被调用。 这必须从UI线程调用。 要从非UI线程调用,请调用postInvalidate()。

http://developer.android.com/reference/android/view/View.html#invalidate ()

也许将视图设置为View.GONE,更改文本大小,然后设置为View.VISIBLE将工作?

在main.xml文件中,TextView的大小为android:textSize =“40sp” 。 并在java端,点击button在这里更改值

  public void onClick(View v) { text.setTextSize(12); }