2011-01-07 87 views
-2

在Blackberry中,我想创建一个扩展Horizo​​ntalFieldManager的类,以便我可以在同一行上显示标签和图像,同时标签位于左侧,图像位于右侧。
我希望用户能够与Horizo​​ntalFieldManager交互,就好像它是单个字段一样。我还希望每个Horizo​​ntalFieldManager在添加到VeriticalFieldManager时都可以聚焦。我也想要clcik行动事件。BlackBerry自定义Horizo​​ntalFieldManager

+1

你见过ListField黑莓?它能满足你的要求吗? – Prasham 2011-01-07 08:41:47

回答

1

听起来像是你会想要开始编写自己的领域类,这里是一个例子,让你开始:


import net.rim.device.api.system.Bitmap; 
import net.rim.device.api.system.Display; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.Graphics; 

public class SimpleField extends Field { 

    private String label; 
    private Bitmap image; 
    private int fieldWidth; 
    private int fieldHeight; 
    private boolean hover = false; 
    private int focusColor = 0xcccccc; 

    public SimpleField(String label, Bitmap image) { 
     super(Field.FOCUSABLE); 
     this.label = label; 
     this.image = image; 
     fieldWidth = Display.getWidth(); 
     fieldHeight = image.getHeight(); 
    } 

    protected void onFocus(int direction) { 
     hover = true; 
     invalidate(); 
     super.onFocus(direction); 
    } 

    protected void onUnfocus() { 
     hover = false; 
     invalidate(); 
     super.onUnfocus(); 
    } 

    public int getPreferredWidth() { 
     return fieldWidth; 
    } 

    public int getPreferredHeight() { 
     return fieldHeight; 
    } 

    protected void layout(int width, int height) { 
     setExtent(fieldWidth, fieldHeight); 
    } 

    protected void paint(Graphics graphics) { 
     if(hover){ 
      graphics.setColor(focusColor); 
      graphics.fillRect(0, 0, fieldWidth, fieldHeight); 
     } 
     graphics.drawText(label, 0, (fieldHeight - graphics.getFont().getHeight())/2); 
     graphics.drawBitmap(graphics.getFont().getAdvance(label), 0, image.getWidth(), image.getHeight(), image, 0, 0); 
    } 
} 
相关问题