我正在尝试生成一个全屏TextView
,自动为其添加随机二进制数。我写了这段代码:
Button button;
TextView textView;
Random rand;
private static final char[] ALPHA_NUMERIC_STRING = "01".toCharArray();
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,false);
rand = new Random();
textView = (TextView) rootView.findViewById(R.id.textView1);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
for (int i=0; i<1000; i++){
textView.append(String.valueOf(ALPHA_NUMERIC_STRING[rand.nextInt(ALPHA_NUMERIC_STRING.length)]));
}
}
});
button = (Button) rootView.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new CountDownTimer(5000, 1) {
public void onTick(long millisUntilFinished) {
textView.append(String.valueOf(ALPHA_NUMERIC_STRING[rand.nextInt(ALPHA_NUMERIC_STRING.length)]));
final int scrollAmount = textView.getLayout().getLineTop(textView.getLineCount()) - textView.getHeight();
// if there is no need to scroll, scrollAmount will be <=0
if (scrollAmount > 0)
textView.scrollTo(0, scrollAmount);
else
textView.scrollTo(0, 0);
}
public void onFinish() {
textView.append("done!");
}
}.start();
}
});
return rootView;
}
此代码工作正常。它在我的textView
中写了一个随机字符串。问题来自于我的textView变得非常大。当它有很多字符时,当我添加一个新的字符并尝试追加它时,我注意到添加和重绘过程非常慢。
有谁知道为什么这会减慢?我怎样才能让它快速起作用?
PS:此代码位于Fragment
。
答案 0 :(得分:0)
在 ScrollView 中使用 TextView ,以显示包含任何行数的消息。
我认为这对您的要求有好处。试试一次。
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="100px"
android:textColor="#f00"
android:textSize="25px"
android:typeface="serif"
android:textStyle="italic"/>
如果您想在需要时动态更改,如下所示:
TextView textarea = (TextView)findViewById(R.id.tv); // tv is id in XML file for TextView
textarea.setTextSize(20);