4

在我的应用程序中,我有一个屏幕,我在其中显示一些文本,然后是一张照片。文本的长度是可变的(有时根本没有,有时很多),所以我想设置它,这样文本永远不会占用超过几行(但可以滚动),为下面的图像留出足够的空间。

这部分的视图组件是以编程方式创建的,并且我已将代码调整为具有以下内容(目前在我的文本设置方法中,但如果它在初始视图创建代码中也会发生同样的事情)

public void SetDescription(String description)
{
    mTxtDescription.setText(Html.fromHtml(description));
    mTxtDescription.setClickable(true);
    mTxtDescription.setMaxLines(5);
    mTxtDescription.setLines(5); //this makes no difference either!
    mTxtDescription.setSingleLine(false);
    mTxtDescription.setScrollbarFadingEnabled(true);
    mTxtDescription.setScrollBarStyle(VERTICAL);
    mTxtDescription.setMovementMethod(ScrollingMovementMethod.getInstance());
    mTxtDescription.invalidate(); //adding this made no difference...
}

但是它不起作用 - 长文本仍然填满整个屏幕,并且图像由于被推到 0 的高度而消失了。我怎样才能让文本永远不超过 5 行?

4

3 回答 3

4

尝试删除对setSingleLine. 并使用setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE). 它还会将此调用放在setMaxLinesandsetLines调用之前以确保。

注意:setLines覆盖 和 的setMaxLines设置setMinLines

TextView围绕如何显示多个、椭圆等的各种调用存在许多问题。

于 2012-07-10T08:02:44.213 回答
1

setSingleLine(false) 似乎重置了 setMaxLines 命令。尝试将 setSingleLine 命令移到 setText 之前。这对我有用。

于 2013-08-13T07:36:59.333 回答
0

下面的代码对我来说工作正常

   txt = (TextView)findViewById(R.id.textview);
   txt.setMaxLines(5);
   txt.setMovementMethod(new ScrollingMovementMethod());

   txt.setScrollContainer(true);
   txt.setText("Example Text");
   txt.setTextColor(Color.WHITE);
   txt.setScrollbarFadingEnabled(true);

在 xml 里面的 textview

   android:scrollbars="vertical"
于 2012-07-10T08:14:26.833 回答