在 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 中创建自定义布局 的相关文章

  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 具有固定顶部菜单的语义 UI 侧边栏

    Semantic UI 对其进行预警侧边栏页面 http semantic ui com modules sidebar html usage 当侧边栏出现时 固定位置内容可能会出现改变其位置的问题 然后它提供了该问题的两种可能的解决方案
  • UI 线程中异步组件的触发事件

    我正在 Net 2 0 中构建一个非可视组件 该组件使用异步套接字 BeginReceive EndReceive 等 异步回调是在运行时创建的工作线程的上下文中调用的 组件用户不必担心多线程 这是主要目标 我想要的 组件用户可以在任何线程
  • 如何将 Jfreechart(饼图)添加到 netbeans 的面板中

    我正在使用 netbeans gui 编辑器 并且正在尝试添加一个本身位于内部框架中的 Jfreechart 并且这个内部框架我想将其添加到面板中 正如您在此图中看到的那样 抱歉 我无法直接发布图像 因为我新手 http www flick
  • ASP.NET C# 中的自定义控件

    我创建了一个简单的自定义控件 它仅继承自Literal控件 并且还没有任何扩展 代码为空 命名空间 CustomControls 类名 文字 System Web UI WebControls Literal 接下来我要做的就是在aspx页
  • 黑莓 JDE ArrayList?

    Blackberry JDE 不包括java util ArrayList 尽管它知道java util 那是怎么回事 BB 有同等级别吗 我真的不想使用数组 因为我正在处理的对象数量未知 为什么 Blackberry JDE 遗漏了这么多
  • 线程输出到 GUI 文本字段

    我试图在 GUI 的 TextField 中输出 但我得到的只是线程信息 这只是完整代码的一小部分 但完整版本也有同样的问题 完整版本有 5 个不同的线程同时运行 任何帮助或建议将不胜感激 public class O21 implemen
  • 如何使用 SwiftUI 创建自定义滑块?

    我可以使用 SwiftUI 创建滑块 但无法更改滑块的样式 如下图所示 问题 我无法在 SwiftUI 中找到任何选项来更改滑块样式 注意 我想仅使用 SwiftUI 创建它 我已经在 Swift 中使用 创建了这个滑块 https git
  • 带有 CollapsingToolbarLayout 的 PreferenceFragment

    我想要具有滚动活动的首选项片段 例如 Telegram 应用程序 我用了一个android support v7 widget RecyclerView in FrameLayout这是我的活动 xml
  • 可感知的最短应用响应延迟是多少?

    用户操作和应用程序响应之间总是会发生延迟 众所周知 响应延迟越低 应用程序瞬间响应的感觉就越强烈 众所周知 高达 100 毫秒的延迟通常是无法察觉的 但是 110ms 的延迟又如何呢 可感知的最短应用响应延迟是多少 我对任何确凿的证据 一般
  • 带有管理等待的 Gui 可重入

    我在使用 NotifyIcons 时发现了重入问题 重现起来非常简单 只需将 NotiftIcon 放在表单上 单击事件应如下所示 private bool reentrancyDetected private void notifyIco
  • 将下拉项定位在按钮 Flutter 下方

    我正在拼命寻找一种方法将项目放置在按钮下方 正如您所看到的 如果先前选择了第一项 则列表顶部与按钮处于同一级别 但是 如果我之前选择了最后一项 则下拉列表的位置使列表在按钮级别结束 这不是我想要的行为 我希望它始终位于第一个屏幕截图中 即使
  • 将 n 个可变高度图像拟合为 3 个(相似长度)列布局

    我正在寻找类似于的 3 列布局piccsy com http piccsy com 给定许多宽度相同但高度不同的图像 有什么算法可以对它们进行排序以使列长度的差异最小 最好使用 Python 或 JavaScript 非常感谢您提前的帮助
  • 使用 Android O 的“android:fontFamily”时出现错误“文件名必须以 .xml 结尾”?

    Android O 引入了一项新功能 XML 中的字体 它允许您将字体用作资源 我正在创建font资源文件中的文件夹 由安卓开发者 https developer android com preview features working w
  • 如何在 Java Gnome/GTK 程序中使用 Glade UI(.glade 文件)?

    我在 Internet 上进行了一项研究 寻找教程 文档来解释如何在 Java Gnome 项目中使用 Glade 中设计的 UI 但没有成功 我已经知道如何使用 Java Gnome GTK 从代码创建 UI 不管怎样 我想使用我在 Ja
  • WebView 未绘制,WARN/webcore(5336):第一次布局后无法获取 viewWidth

    我的应用程序有一个视图 可以使用以下代码以编程方式添加到活动中 RelativeLayout LayoutParams layoutParams new RelativeLayout LayoutParams 480 75 Relative
  • HTML/CSS:页面左侧的导航栏

    我发现创建这样具有良好语义的布局很尴尬 左侧是大约 150 像素宽的列 其中包含导航元素 我想将网站这部分的 HTML 放在 HTML 代码的开头 然后有一个简单的方法来强制页面的其余部分不侵占左侧的区域 150 像素列 我考虑过一些选择
  • WM_NEXTDLGCTL 可以与非对话框窗口一起使用吗?

    的文档WM NEXTDLGCTL https msdn microsoft com en us library windows desktop ms645432 aspx声明该消息将与对话框一起使用 发送到对话框过程以将键盘焦点设置到对话框
  • 在两个可拖动的 Flatlist 之间拖放 - React Native

    我正在努力为我的 React Native 应用程序创建一个要求 其中我有一个空白的保管箱 在放置平面列表项目时 它应该转换为可拖动的平面列表 和一个可拖动的平面列表 我必须从其中拖放到空白保管箱 反之亦然 两个平面列表中的项目应该有一个单
  • Android listview数组适配器选择

    我正在尝试向列表视图添加上下文操作模式 但如果我做了一个选择 我会遇到一些问题List1 setSelection position 它不会选择任何东西 如果我做List1 setItemChecked position true 它可以工

随机推荐

  • 下载文件时如何显示和删除正在加载的 .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