【发布时间】:2014-09-07 23:36:34
【问题描述】:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:weightSum="3" >
<TextView
android:id="@+id/info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="bottom|center"
android:maxLines="10"
android:scrollbars="vertical"
android:text="@string/hello_world"
android:textSize="20sp" />
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
我设置了一个TextView和一个seekbar,然后设置seekbar的监听器在每次值更改时将一行文本附加到textview中,随着textview获取越来越多的文本,应用程序完全变慢,我尝试使用诸如 maxlines 或 ellipsize 之类的东西来限制、截断文本,但似乎不起作用。
我可以使用任何内置的东西吗?
这里是java代码:
this.seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
info.append("\n" + "Stop" + "Current: " + seekBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
info.append("\n" + "Start" + "Current: " + seekBar.getProgress());
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
info.append("\n" + "Changing" + "Current: " + seekBar.getProgress());
}
});
【问题讨论】:
-
可能你的字符串太长了。尝试设置字符串的长度可能会有所帮助,优点是加载有限长度所需的时间更少。
-
谢谢,你的意思是太长了?是的,我同意,我想找到 android 内置的东西来限制它。
-
太长意味着长度很大。设置最大行数的正常方法是 android:maxLines="10"。那就是你正在使用。如果它不起作用,那么尝试设置字符串的限制。我只是给你评论,这不是一个完美的解决方案。詹克斯。
-
为什么不在 seekbar 监听器中检查文本的长度,如果已经太长,那么就不要附加文本?
-
@Amsheer
android:maxLines只是限制显示框的大小,而不是字符串包含的长度。对于EditText,android:maxLength限制文本的长度。但由于他/她使用的是TextView而不是EditText,我认为他/她需要在搜索栏侦听器中以编程方式限制长度。
标签: android