关闭

Blackberry UI框架

标签: uiblackberryscrollmanager黑莓框架
1099人阅读 评论(0) 收藏 举报
分类:

在黑莓原生的UI框架里,所有的UI组件都是Field,这里的Filed代表一个占据一个矩形空间的物件。自定义的UI组件必须是Field的子类或子类的子类。

黑莓的UI有个特性就是默认其大小是不固定的,它不提供类似setSize(),resize()之类的函数,而是需要在开发者客制化一个Filed时在Layout中去指定其大小。而如果需要的是一个大小固定,内容可伸缩的Field,则必须在该Filed之外包裹上一层Manager,也就是说这时候,除了客制化Field之外,开发者还需要客制化一个Manager

自定义大小的EditField示例:

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.FocusChangeListener;

import net.rim.device.api.ui.Graphics;

import net.rim.device.api.ui.Manager;

import net.rim.device.api.ui.component.EditField;

import net.rim.device.api.ui.container.VerticalFieldManager;

public class VerticalFieldInputManager extends VerticalFieldManager{

    private int managerWidth;

    private int managerHeight;

    private EditField editField;

    

    

    public VerticalFieldInputManager(int width, int height) {

        super(Manager.NO_VERTICAL_SCROLL );

        managerWidth = width;

        managerHeight = height;

        VerticalFieldManager vfm = new VerticalFieldManager(Manager.VERTICAL_SCROLL);

        editField = new EditField(Field.FOCUSABLE);

        editField.setFocusListener(new FocusChangeListener() {

            

            public void focusChanged(Field field, int eventType) {

                // XXX Auto-generated method stub

                invalidate();

            }

        });

        editField.setPadding(5,5,5,5);

        vfm.add(editField);

        add(vfm);

        

    }

    public void sublayout(int width, int height) {

        if(managerWidth == 0) {

            managerWidth = width;

        }

        if(managerHeight == 0) {

            managerHeight = height;

        }

        super.sublayout(managerWidth, managerHeight);

        setExtent(managerWidth,managerHeight);

    }

    

    protected void paintBackground(Graphics graphics) { 

        if(editField.isFocus()){

            graphics.setColor(0x0000FF);

        }else{

            graphics.setColor(0x000000);

        }

        

        graphics.drawRect(0, 0, managerWidth, managerHeight);

        graphics.setColor(0x000000);

        super.paint(graphics);

    }

    

    

    public String getText() {

        return editField.getText();

    }

    

    public void setText(String text) {

        editField.setText(text);

    }

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:110859次
    • 积分:1580
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:2篇
    • 译文:8篇
    • 评论:15条
    最新评论