嗨,我已经通过这个链接LabelField Marquee实现了水平滚动文本。但我有一个问题,文本滚动得很好,但它被覆盖在添加的原始文本上。有人知道如何解决这个问题吗?我也尝试通过invalidate()
但没有用来刷新视图。我添加了我面临的问题的屏幕截图。
任何帮助都是不言而喻的。
谢谢你。
嗨,我已经通过这个链接LabelField Marquee实现了水平滚动文本。但我有一个问题,文本滚动得很好,但它被覆盖在添加的原始文本上。有人知道如何解决这个问题吗?我也尝试通过invalidate()
但没有用来刷新视图。我添加了我面临的问题的屏幕截图。
任何帮助都是不言而喻的。
谢谢你。
我建议您将绘画方法更改为下一个:
public void paint(Graphics graphics) {
currentText = this.getText();
if (currentChar < currentText.length()) {
currentText = currentText.substring(currentChar);
}
graphics.drawText(currentText, 0, 0, DrawStyle.ELLIPSIS, 200);
}
所以不要调用super.paint()
你的paint
.
我已经(以更简单的方式)重写了您链接的答案。它工作正常。
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.DrawStyle;
import java.util.Timer;
import java.util.TimerTask;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
public class MyScreen extends MainScreen {
public MyScreen() {
super();
MarqueeLabel testLabel2 = new MarqueeLabel("This is a long long " +
"long long long long long long long long long long long " +
"long long marquee", Field.FOCUSABLE);
add(testLabel2);
}
class MarqueeLabel extends LabelField {
// Here MarqueeLabel code from your SO linked example
}
}