在 BlackBerry 中创建自定义布局

2023-12-12

我想在屏幕的下半部分创建一个 RichTextField,同时在屏幕的上半部分绘制自己的自定义图形。这在黑莓手机中可能吗?它尝试定义 LayoutManager 并尝试将 RichTextField 定位在屏幕底部,但 RichTextField 滚动整个屏幕。这是 LayoutManager() 的代码。这是正确的方法还是有其他方法可以完成我上面提到的操作。

class LayoutManager extends Manager 
{

  public LayoutManager() 
  { 
    //construct a manager with vertical scrolling    
    super(VERTICAL_SCROLL);
  }

  //overwrite the nextFocus method for custom navigation  
  protected int nextFocus(int direction, boolean alt)  
  {
        return super.nextFocus(direction, alt);
  }

  protected void sublayout(int width, int height) 
  {
    Field field;
    //get total number of fields within this manager
    int numberOfFields = getFieldCount();     
    int x = 0;
    int y = 0;
    System.out.println("******** Fields: " + numberOfFields + " W/H: " + width + " / " + height );
    for(int i = 0;i < numberOfFields;i++) {
      field = getField(i);      //get the field
      x = 20;
      y = 80;
      System.out.println("******** X/Y: " + x + " / " + y);
      setPositionChild(field, x, y);  //set the position for the field
      layoutChild(field, width, y);  //lay out the field
    }
    setPosition(0, 80);
    setExtent(width, 80);

  }

  public int getPreferredWidth() 
  {
   return 160;
  }

  public int getPreferredHeight() 
  {
    int height= 0;
    int numberOfFields= getFieldCount();

    for(int i= 0; i < numberOfFields; i++) 
    {
        height += getField(i).getPreferredHeight();
    }
    return 160;
  }
}

UPDATE- 自定义滚动条

自定义滚动条http://img146.imageshack.us/img146/7775/scroll.png

VerticalFieldManager 具有自定义大小限制和滚动:

class SizedVFM extends VerticalFieldManager {
    int mWidth;
    int mHeight;

    public SizedVFM(int width, int height) {
        super(VERTICAL_SCROLL | VERTICAL_SCROLLBAR);
        mWidth = width;
        mHeight = height;
    }

    public int getPreferredHeight() {
        return mHeight;
    }

    public int getPreferredWidth() {
        return mWidth;
    }

    protected void sublayout(int maxWidth, int maxHeight) {
        super.sublayout(maxWidth, maxHeight);
        setExtent(getPreferredWidth(), getPreferredHeight());
    }

    protected void paint(Graphics graphics) {
        super.paint(graphics);
        if (getVisibleHeight() < getVirtualHeight()) {
            int y1 = 0, y2 = 0, x1 = 0, x2 = 0;
            int scrollOff = getVerticalScroll();
            if (scrollOff > 0) {
                y1 = scrollOff + 12;
                y2 = scrollOff + 2;
                x1 = getVisibleWidth() - 20;
                x2 = getVisibleWidth() - 2;

                graphics.setColor(Color.DARKRED);
                int[] xPts = new int[] { x1, x2, x1 + 9 };
                int[] yPts = new int[] { y1, y1, y2 };
                graphics.drawFilledPath(xPts, yPts, null, null);
            }
            if (scrollOff < (getVirtualHeight() - getVisibleHeight())) {
                y1 = scrollOff + getVisibleHeight() - 12;
                y2 = scrollOff + getVisibleHeight() - 2;
                x1 = getVisibleWidth() - 20;
                x2 = getVisibleWidth() - 2;
                graphics.setColor(Color.DARKRED);
                int[] xPts = new int[] { x1, x2, x1 + 9 };
                int[] yPts = new int[] { y1, y1, y2 };
                graphics.drawFilledPath(xPts, yPts, null, null);
            }
        }
    }
}

绘画和文本字段:

class HeaderPainting extends SizedVFM {
    BitmapField mBitmapField;
    public HeaderPainting(Bitmap bitmap, int width, int height) {
        super(width, height);
        add(mBitmapField = new BitmapField(bitmap, FOCUSABLE));
    }
}
class FooterText extends SizedVFM {
    ExRichTextField mTextField;
    public FooterText(String text, int width, int height) {
        super(width, height);
        int bgColor = Color.SANDYBROWN;
        int textColor = Color.DARKRED;
        add(mTextField = new ExRichTextField(text, bgColor, textColor));
    }
    class ExRichTextField extends RichTextField {
        int mTextColor;
        int mBgColor;
        public ExRichTextField(String text, int bgColor, int textColor) {
            super(text);
            mTextColor = textColor;
            mBgColor = bgColor;
        }
        protected void paint(Graphics graphics) {
            graphics.clear();
            graphics.setColor(mBgColor);
            graphics.fillRect(0, 0, getWidth(), getHeight());
            graphics.setColor(mTextColor);
            super.paint(graphics);
        }
    }
}

使用示例:

class Scr extends MainScreen {
    HeaderPainting mBitmapField;
    FooterText mTextField;
    public Scr() {
        int width = Display.getWidth();
        int height = Display.getHeight() / 2;
        Bitmap bitmap = customPaint(width, height);
        String text = "Lorem ipsum dolor sit amet, consectetuer "
                + "adipiscing elit, sed diam nonummy nibh euismod "
                + "tincidunt ut laoreet dolore magna aliquam erat "
                + "volutpat. Ut wisi enim ad minim veniam, quis "
                + "nostrud exerci tation ullamcorper suscipit "
                + "lobortis nisl ut aliquip ex ea commodo consequat. "
                + "Duis autem vel eum iriure dolor in hendrerit in "
                + "vulputate velit esse molestie consequat, vel "
                + "illum dolore eu feugiat nulla facilisis at vero "
                + "eros et accumsan et iusto odio dignissim qui "
                + "blandit praesent luptatum zzril delenit augue "
                + "duis dolore te feugait nulla facilisi.";
        add(mBitmapField = new HeaderPainting(bitmap, width, height));
        add(mTextField = new FooterText(text, width, height));
    }
    protected Bitmap customPaint(int width, int height) {
        Bitmap bmp = new Bitmap(width, height);
        Graphics graphics = new Graphics(bmp);
        graphics.setColor(Color.BLUE);
        graphics.fillRect(10, 10, width - 20, height - 20);
        graphics.setColor(Color.RED);
        graphics.fillRect(10, 10, 50, height - 20);
        return bmp;
    }
}

如果您不喜欢 RichTextField 内的焦点,请参阅
黑莓 Java:文本字段without插入符号?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 BlackBerry 中创建自定义布局 的相关文章

  • Mvvm 支持自定义 Kendo ui 小部件

    前几天我问this https stackoverflow com questions 24828905 developing custom kendo ui widget问题并得到了一个非常酷的答案 以后我想知道我是否可以使用我的自定义小
  • Android 布局仅使一个视图将自己绘制为横向,但其他所有视图都使用纵向

    我的活动布局中的主要视图元素是 VideoView 我的视频被渲染为设备的横向分辨率 但视频中的所有内容都是横向的 因此仍然需要在设备处于纵向位置时观看 即使我必须将活动设置为android screenOrientation landsc
  • 保持 GUI 独立

    我有一个程序 除其他外 有一个命令行界面 可以让用户输入字符串 然后通过网络发送字符串 问题是我不确定如何将 GUI 内部生成的事件连接到网络接口 假设我的 GUI 类层次结构如下所示 GUI gt 主窗口 gt 命令行界面 gt Entr
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • 为什么这个 GWT DockLayoutPanel 的对话框尺寸这么小?

    我使用 GWT 2 0 4 生成了一个新的 Web 应用程序项目 我将 onModuleLoad 代码替换为 public void onModuleLoad DockLayoutPanel dp new DockLayoutPanel U
  • WPF 中的液体布局?

    Liquid布局在WPF中可行吗 当我们进行 Liquid 布局时 我们需要解决哪些顾虑 问题 Liquid 布局是否会调整文本字体大小 并且在图像变小和变大时也会调整图像宽度 是的 大多数容器 在 WPF 中称为面板 都支持液体布局 但使
  • SGC GUI 和 Pygame Widget 实现

    您好 我正在尝试使用 Pygame 编写一个简单的应用程序 我进行了各种搜索 发现获取用户输入的最佳方法是使用第 3 方 GUI 我为此目的找到了简单的游戏代码 下面 您可以找到我的基本代码 它在脚本的同一路径中查找图像并在屏幕上按顺序替换
  • 如果在构造函数中初始化该属性,则似乎不会设置 XAML 绑定

    当属性在构造函数内初始化时 我遇到了控件模板内数据绑定的问题 这是展示案例 您也可以下载样品溶液 http www filehosting org file details 75794 WpfApplication5 zip 自定义控件1
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • 通过 inflate 将 XML 属性从合并布局转换为relativelayout

    根据这个 CommonsWare 示例 我设法将我的relativelayout子类与具有合并根的xml布局中描述的布局合并 我唯一担心的是我无法在 xml 中描述我的relativelayout参数 我的 xml 布局
  • SwiftUI 表单中的动态行高

    我正在向 SwiftUI 表单添加控件以帮助用户输入数据 并限制条目 尽管 Forms 有很多值得喜欢的地方 但我发现在该容器之外运行良好的东西在容器内却会发生非常意想不到的事情 并且如何弥补这一点并不总是显而易见的 计划是将数据字段显示为
  • jquery UI datepicker - 禁用日期范围

    我正在努力让某些东西正常工作 我遇到了 未捕获的类型错误 无法读取未定义的属性 0 错误 如下所示 我不明白为什么 我正在尝试在度假别墅网站上使用 jQuery UI 日期选择器来指示可用性和季节 低 高等 我有一个作为 datePicke
  • 使 Java JScrollpane 仅垂直滚动

    我希望我的整个 JFrame 能够垂直滚动 我添加了以下代码 但它只创建了一个水平滚动条 frame setContentPane new JScrollPane new GradeQuickResource 我想做相反的事情 我只想要一个
  • PySide / Python GUI 冻结

    我目前正在为 rvplayer 编写一个 GUI 它将使艺术家能够自动渲染带有板岩和老化信息的样片 GUI 使用 PySide 编写并使用 Python 2 7 编写脚本 我的问题是 在调用我的流程并更新我的QProgressBar使用 s
  • 没有 GUI 的 Android Activity

    我创建了一个仅从链接启动的活动 使用意图过滤器 我不希望此活动有 GUI 我只希望它启动服务并在栏中放置通知 我尝试将链接的意图过滤器放入我的服务中 但这不起作用 有没有更好的方法可以响应意图过滤器 或者我可以让我的活动没有 GUI 吗 抱
  • Perl Tk 模块有哪些缺点?

    与在 Perl 中创建 GUI 的其他解决方案相比 Tk 模块有哪些缺点 我最近浏览了 Perl 的各种 gui 模块 这是我的总结 免责声明 最终我发现现有模块都不能满足我的需求 所以我开始编写自己的 gui 工具包 Tk 工作起来很不错
  • 向 Thunderbird 添加多个附件(从命令行)

    我尝试通过命令行创建带有多个附件的新消息 但这不起作用 thunderbird compose attachment etc mtab attachment etc fstab 仅附加第一个文件 第二个失踪了 上面的命令行有什么问题 PS
  • 如何在android线性布局上获得阴影? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在android中为View设置阴影 https stackoverflow com questions 4406524 how to set shadow to a view in androi
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import

随机推荐

  • 下载文件时如何显示和删除正在加载的 .gif?

    我有一个按钮 单击该按钮后 需要通过使用 POST 提交表单来下载文件 编辑以澄清 正在下载的文件是通过 PHP 脚本根据隐藏表单中的值动态生成的 我通过 jQuery 进行更改 具体取决于单击的按钮 相关文件是 Excel 文件 如果可能
  • 在 Windows 上链接可执行文件的正确方法是什么?

    我需要在插件中使用主可执行文件中的一些符号 链接可执行文件会导致以下链接器错误 i686 w64 mingw32 g example cpp shared I std c 11 o test dll test exe static libg
  • Python - OpenCV - 裁剪图像并隔离特定对象

    使用 python OpenCV 我成功读取了以下图像 检测矩形 裁剪它们并将每个矩形保存为图像 这是我成功裁剪并保存为图像的矩形示例 所以会有 12 个 然后处理每个矩形图像 以便隔离圆并为每个圆创建一个新图像 我也使用 cv2 Houg
  • API 14 之前的 Android 网络发现服务 (ish)

    我需要能够发现本地网络上的服务 比如说我正在运行一个聊天应用程序 并且我想发现本地网络上运行此聊天的其他设备 但遗憾的是我需要能够在具有API 至少有三四个选择 您可以使用 TCP 或 UDP 广播地址 组播地址 迭代网络中的所有地址 HT
  • 在同一端口上接收多个多播源 - C、Linux

    我有一个应用程序正在同一端口上从多个多播源接收数据 我能够接收数据 然而 我试图解释每组的统计数据 即收到的消息 收到的字节 并且所有数据都变得混乱 有谁知道如何解决这个问题 如果我尝试查看发送者的地址 它不是多播地址 而是发送机器的 IP
  • 为什么 conn.Read() 不向 []byte 写入任何内容,但 bufio.Reader.ReadString() 有效?

    我有一个连接 创建如下 conn err net Dial tcp 127 0 0 1 20000 我尝试通过两种方式阅读此连接 我认为它们都必须起作用 但第一个选项不起作用 这是第一种方法 var bytes byte for i 0 i
  • 是否可以创建一个更改 about:config 设置的 Firefox WebExtension?如何?

    我想创建一个 WebExtension 为其中的某些设置提供切换按钮about config e g permissions default image 在 WebExtensions 中可以做到这一点吗 如果有 API 是什么 我相信这个
  • 如何观察NSScroller的变化?

    我有一个NSScrollView子类 我想更新另一个NSView基于当前滚动位置 我尝试了 KVC 观察value of self horizontalScroller 但这永远不会被调用 In awakeFromNib self hori
  • 在shiny中动态添加模块

    这与使用 renderUI 创建模块无关 据我了解 使用 renderUI 您可以在 UI 函数中放置一个占位符 然后在服务器函数中编写控件 小部件 模块分为两部分 您必须使用 callModule 将一部分添加到 UI 函数 将另一部分添
  • 使用多个签名重写 C++ 虚拟方法 [重复]

    这个问题在这里已经有答案了 我有一个 C 基类 它声明一个具有两个不同签名的虚拟方法 一旦我重写派生类中的虚拟方法签名之一 编译器 g 4 6 3 和 g 4 7 就不再能够将该方法与同一派生类中的第二个签名相匹配 如果我只将 SPECIA
  • 在 CSS 网格布局中,我们是否从隐式网格线开始计算跨度?

    这个问题是关于 CSS 网格是否 跨度计数 它是否应该从隐式网格线开始 在CSS 权威指南 第 4 版 第 14 页695 据说 box4 是事情真正变得有趣的地方 它结束于第五行线 即第二条隐式网格线 它跨越了三行 然而 它仍然从与 bo
  • PHP文件在模态窗口内上传

    我已经在互联网上搜索了好几天 但没有运气 我需要一个模式窗口来上传文件并将附加值传递给脚本 当用户单击 这是问题 时 需要打开模式窗口 以下是我当前的脚本 任何帮助或指导将不胜感激
  • 不允许加载本地资源:file:///

    我的项目中名为 幻灯片 的文件夹中有一些图像 我正在尝试访问这些图像 但它给了我以下错误 Not allowed to load local resource file C xampp htdocs MyProject Slides 123
  • Xcode 4 - 如何获取 .app 文件?

    我安装了 Xcode 4 它有非常酷的功能 我使用 Xcode 4 开发了我的新应用程序 现在将其交给客户进行测试 问题是我无法在查找器中获取 app 文件 在产品类别下 当我选择 app 文件并右键单击它时 没有 在查找器中显示 选项 我
  • django-debug-toolbar 通过相对路径查找资产?

    我正在尝试让 django debug toolbar 正常工作 在遵循所有说明后 我收到以下错误 05 Sep 2012 15 33 35 GET profile edit HTTP 1 1 200 43647 05 Sep 2012 1
  • 当覆盖层打开时暂停 Flexslider

    我们目前正在开发一个利用 Flexslider 插件 最近被 Woo Themes 收购 的项目 我们在此页面上有多个弹出窗口 我们希望滑块在弹出窗口处于活动状态时暂停 并在弹出窗口关闭时恢复 暂停仅在第一轮有效 恢复滑块不起作用 下面是我
  • 带参数和数组的对象

    C 中是否有一种方法可以在对象上添加参数 并使用数组 例如 int x 1 int y 2 Object myObject x y 5 does not work 我希望我可以将参数放入对象中 同时创建 5 个这样的对象的数组 有人知道怎么
  • 将 Tidymodels 进程映射到列表/分组依据或嵌套

    我真的很喜欢 tidymodels 但我不清楚如何将该模型工作流程适合于嵌套分组之类的东西 例如 tidyr 在 mtcars 的气缸等物体上勾勒出一个简单的嵌套 然后为每个气缸拟合一个独特的线性调节模型 我正在尝试基于圆柱体之类的东西来拟
  • Vba 代码在工作簿打开后停止。没有错误

    我有一些代码旨在打开 xlsm 工作簿 从中复制一些数据并将其与代码一起粘贴到工作簿中 两个工作簿均受密码保护 代码也受密码保护 我有一些代码设置为在保存 打开和关闭之前运行 从而锁定工作簿 所以问题是 在通过 vba 打开工作簿后 代码停
  • 在 BlackBerry 中创建自定义布局

    我想在屏幕的下半部分创建一个 RichTextField 同时在屏幕的上半部分绘制自己的自定义图形 这在黑莓手机中可能吗 它尝试定义 LayoutManager 并尝试将 RichTextField 定位在屏幕底部 但 RichTextFi