如果文字太长 又不想换行的话 可以用文字滚动效果。
下面是代码:
LabelField testLabel = new LabelField( "I swear to god up in the sky I will be your shelter when you cry Cause you are my everything.", Field.FOCUSABLE) { int currentChar = 0; String currentText = null; Font ourFont; private Timer _scrollTimer; private TimerTask _scrollTimerTask; protected void paint(Graphics graphics) { currentText = this.getText(); if (currentChar < currentText.length()) { currentText = currentText.substring(currentChar); } graphics.drawText(currentText, 0, 0, DrawStyle.ELLIPSIS, Display .getWidth()); } protected void layout(int width, int height) { ourFont = this.getFont(); setExtent(Display.getWidth(), ourFont.getHeight()); } protected void onDisplay() { startScroll(); } protected void onUnfocus() { startScroll(); } private void startScroll() { // Start scrolling final String fullText = this.getText(); if (_scrollTimer == null) { _scrollTimer = new Timer(); _scrollTimerTask = new TimerTask() { public void run() { currentChar = currentChar + 4; if (currentChar > fullText.length()) { currentChar = 0; } invalidate(); } }; _scrollTimer.scheduleAtFixedRate(_scrollTimerTask, 500, 500); } } protected void onFocus(int direction) { if (_scrollTimer != null) { _scrollTimerTask.cancel(); _scrollTimer.cancel(); _scrollTimer = null; _scrollTimerTask = null; } } protected boolean navigationMovement(int dx, int dy, int status, int time) { currentText = this.getText(); int oldCurrentChar = currentChar; if (Math.abs(dx) > Math.abs(dy)) { // horizontal scroll if (dx > 0) { currentChar = Math.min(currentText.length() - 1, currentChar + 1); } else if (dx < 0) { currentChar = Math.max(0, currentChar - 1); } if (oldCurrentChar != currentChar) { this.invalidate(); } return true; } else { return super.navigationMovement(dx, dy, status, time); } } };
Demo工程也上传吧
1 楼 女巫の微笑 2010-03-04
谢谢 真是帮忙了
2 楼 doll 2010-03-07
女巫の微笑 写道
谢谢 真是帮忙了
能帮你我很高兴 不用客气
3 楼 michael_wang 2010-10-11
留个脚印