2012-08-15 97 views
2

嗨,我已经通过此链接水平实现了滚动文本LabelField Marquee。但是我有一个问题,文本滚动的不错,但是它被覆盖在已添加的原始文本上。可以有人知道如何解决这个问题吗?我也尝试刷新视图invalidate()但没用。我添加了我正面临的问题的屏幕截图。TextField横向滚动

任何帮助将是可观的。

谢谢。

enter image description here

回答

2

我会建议你改变paint方法来下一个:

public void paint(Graphics graphics) { 
    currentText = this.getText(); 
    if (currentChar < currentText.length()) { 
     currentText = currentText.substring(currentChar); 

    } 
    graphics.drawText(currentText, 0, 0, DrawStyle.ELLIPSIS, 200); 
} 

所以不要在你的paint调用super.paint()

+0

thankx @ Eugen.Thankx很多人:) ..它是我的错误,我在我的paint方法中调用了super.paint()。 – AkashG 2012-08-20 04:36:05

+0

它工作很好,但它显示从中间到左侧的测试,我想这样做,文本应该从右向左移动甚至文本是小或大。我可以如何处理这段代码,你能帮助我吗? – Hasmukh 2012-11-09 11:13:45

+0

查看源代码 - 将不同的字体设置为标签字段,而不是从0位置开始,并在每个滴答声右移4个符号,先用text.length()开始并向左移动4个符号(将+操作改为减号) 。如果您仍然有问题 - 请创建新主题 – 2012-11-09 12:28:17

1

我改写(以更简单的方式),你链接的答案。它工作正常。

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 

    } 

} 
+0

它不工作..仍然是同样的问题:( – AkashG 2012-08-16 13:28:18

+0

今天早上我再次尝试你说的方式,但结果是一样的..它连续移动,但也覆盖了文本...请让我摆脱这个 – AkashG 2012-08-17 05:01:02

+0

我在8520模拟器上使用JRE 5.0.0 Java Plugin for Eclipse 1.3.0检查你的配置 – rosco 2012-08-17 06:58:51