Android - 动态设置TextView的高度

时间:2010-09-07 10:30:42

标签: android

我有一些与TextView高度相关的关键问题。我想根据运行时设置的内容设置TextView的高度。这是我的xml代码: -

<TextView android:id="@+id/tv" 
          android:layout_width="fill_parent" android:layout_height="wrap_content"/>`

以下是设置TextView高度的java代码:

TextView tv = (TextView) findViewById(R.id.tv);
tv.invalidate();
int height_in_pixels = tv.getLineCount() * tv.getLineHeight();
tv.setHeight(height_in_pixels);

但问题是它只显示1行,而不显示其余行。

2 个答案:

答案 0 :(得分:3)

在Java代码中:

TextView tv =(TextView)findViewById(R.id.tv);

tv.invalidate();

int height_in_pixels = tv.getLineCount() * tv.getLineHeight();

tv.setHeight(height_in_pixels);

这些行在java代码中是不受欢迎的。在xml本身中,您提到了layout_height="wrap_content"。那么为什么你再次设置TextView的高度。并确保android:singleLine="false"中的<textview>。如果您未设置任何内容,则其默认值为false。

答案 1 :(得分:1)

  

但问题是;它只显示   1行,而不是其余的行。

我认为最好的解决方案是在“ScrollView”中定义textview。

例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <ScrollView 
        android:id="@+id/ScrollView01" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">

    <TextView 
            android:text="@+id/TextView01" 
            android:id="@+id/TextView01" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content">
    </TextView>
    </ScrollView>

</LinearLayout>