具有固定大小的 Blackberry VerticalFieldManager:滚动问题

2024-04-03

我试图拥有一个带有修复标题(带有某些字段的管理器)和可滚动内容(自定义字段列表)的全屏用户界面。这个想法是模拟一种可滚动列表。

为此,我制作了一个接受 maxHeight(屏幕高度 - 标题高度)的自定义 VerticalFieldManager。

我遇到以下问题:

  • 滚动箭头不显示(永远)
  • 在 OS 4.7 (Storm) 上,我可以向下滚动到最后一项,直到屏幕上除了标题之外没有任何内容。

我的代码需要使用 JDE 4.2.1 和 4.7 进行编译并在 Pearl 和 Storm 上运行。 (最坏的情况下我可以有这个课程的两个版本)

我怀疑这两个问题是相关的。我可能做错了什么。我查看了一些示例/论坛,总是找到类似的解决方案/代码。 你们能告诉我我做错了什么吗?

/**
 *  custom class, so we can set a max height (to keep the header visible)
 */
class myVerticalFieldManager extends VerticalFieldManager{
private int maxHeight = 0;

myVerticalFieldManager(int _maxHeight){
  super(
   //this provoc an "empty scrollable zone" on Storm
   // but if you don't put it, on other OS, the vertical manager does not scroll at all.
   Manager.VERTICAL_SCROLL 

   | Manager.VERTICAL_SCROLLBAR
   ); 
  maxHeight = _maxHeight;
}


protected void sublayout(int width, int height){
        super.sublayout(width, getPreferredHeight());
        setExtent(width, getPreferredHeight());
}

public int getPreferredWidth() {
    return Graphics.getScreenWidth();
}

/**
 * allow the manager to use all the given height. (vs auto Height)
 */
public boolean forceMaxHeight = false;
public int getPreferredHeight() {
  if (forceMaxHeight) return maxHeight;
  int m = super.getPreferredHeight();
  if (m > maxHeight) m = maxHeight;
  return m;   
}    

////////////////////////////////////////////////////////////////////////////

protected boolean isUpArrowShown(){
  //TODO: does not seem to work (4.2.1 emulator & 4.5 device). (called with good return value but the arrows are not painted)
  int i = getFieldWithFocusIndex();
  //Trace("isUpArrowShown " + i);
  return i > 0;
  // note: algo not correct, cause the up arrow will be visible event when no field are hidden.
  //       but not so bad, so the user "know" that he can go up.
}

protected boolean isDownArrowShown(){
  int i = getFieldWithFocusIndex();
  return i < getFieldCount();
}

////////////////////////////////////////////////////////////////////////////
// note : since 4.6 you can use
// http://www.blackberry.com/developers/docs/4.6.0api/net/rim/device/api/ui/decor/Background.html

public int myBackgroundColor = 0xffffff;
protected void paint(Graphics g){
    g.setBackgroundColor(myBackgroundColor);
    // Clears the entire graphic area to the current background
    g.clear();
    super.paint(g);
}


} 

欢迎任何帮助。


so,

我为 STORM 上的“空可滚动区域”问题提供了这个解决方法 它很丑陋,并且不允许自定义 ScrollChangeListener,但它可以在 Pearl & Storm 上使用

implements ScrollChangeListener

 //in constructor:

  setScrollListener(null);
  setScrollListener(this);


private boolean MY_CHANGING_SCROLL = false;
public void scrollChanged(Manager manager, int newHorizontalScroll, int newVerticalScroll){
  if (!MY_CHANGING_SCROLL){
    MY_CHANGING_SCROLL = true;
    myCheckVerticalScroll();
    MY_CHANGING_SCROLL = false;
  }      
}  


protected int myMaxVerticalScrollPosition(){
  int vh = getVirtualHeight();
  int h = getHeight();
  if (vh < h ) return 0; // no scroll
  return vh - h; // don't scroll lower than limit.
}

protected void invCheckVerticalScroll() {
    int i = getVerticalScroll();
    int m = myMaxVerticalScrollPosition();
    if ( i > m){
        i = m;
        setVerticalScroll(i);
    }
}

我仍在寻找滚动箭头问题的解决方案...... 如果有人有想法...

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

具有固定大小的 Blackberry VerticalFieldManager:滚动问题 的相关文章

  • 将 BlackBerry 应用程序设计得像 iPhone

    我正在将应用程序从 iPhone 移植到 BlackBerry BlackBerry 应用程序往往看起来不像 iPhone 那样精美 但自然地 我希望尽可能保持精美 而不破坏任何重要的 UI 约定 有没有任何 UI 组件可以帮助解决这个问题
  • 电话软件开发语言

    是否存在通用的手机开发语言 我的意思是 例如 php 或 java 或其他 编辑 我们必须开发一些电话应用程序 并且我们正在寻找不同设备 黑莓 iPhone 摩托罗拉等 中最好的可重用语言 Java 已经非常接近了 但它还远未达到通用性 i
  • 适用于 iPhone、Android 和 Blackberry 的移动开发

    我最近偶然发现了 PhoneGap 我喜欢这个概念 但我无法在 Android 应用程序上进行第一次尝试 该文档跳过了一些细节 注释中充满了遇到问题的人 有人正在运行 PhoneGap 吗 你对 Android 做了什么调整 大约有 3 种
  • 我应该开发什么最低的 BlackBerry 操作系统?

    我正在为 BlackBerry 移动设备开发 Netflix 应用程序 我需要决定我应该开发的最低操作系统版本 取决于我选择的版本会产生一些设计影响 例如我可以使用哪些浏览器字段类等 归根结底是 我应该支持低于 OS 5 0 的版本吗 我会
  • Blackberry BrowserField白色空页问题

    你好 我想在 BrowserField 中显示 html 内容 我使用代码 blove 来执行此操作 但我只看到白色的空白页面 BrowserField demo new BrowserField String res p demo p d
  • 开发黑莓应用程序的好工具包是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找用于一般 Blackberry 开发或应用程序工具包的工具包 SDK 有类似 MVC 框架的东西吗
  • Virtualbox 虚拟机上的 Windows 7:是否兼容 OpenGL 1.x?

    在 Windows 7 客户机的 VirtualBox 虚拟机设置 或系统信息 中 我无法查明我的虚拟显卡是否兼容 OpenGL 1 x 我需要 OpenGL 1 x 兼容性才能进行测试黑莓7模拟器 http developer black
  • 黑莓 - 应用程序已在商店上架;我可以更改代码签名密钥吗

    不久前 我们为客户构建了一个应用程序 使用我们公司的密钥对其进行签名 并将其放在 BlackBerry App World 商店中 此后我们终止了与客户的合同 他们现在已经对该应用程序进行了进一步的 内部 开发 并要求我们提供签名密钥 以便
  • 无法在 eclipse 中安装 blackberry webworks 插件

    using http www blackberry com go eclipseUpdate 3 6 java http www blackberry com go eclipseUpdate 3 6 java 我安装了Blackberry
  • Blackberry - 具有不同 ID 的可点击 BitmapField

    我正在创建一个应用程序 在其中我通过 JSON 从 Web 服务器获取带有 id 的礼品图像 当我点击任何礼物图像时 它会进入下一页 其中显示该图像的所有信息 通过 JSON 从 Web 服务器获取图像信息及其 ID 问题是 当我点击页面上
  • BlackBerry 中的图像按钮

    如何在 BlackBerry 中实现图像按钮 在这里 完整的代码 import net rim device api system Bitmap import net rim device api ui Graphics import ne
  • 将新图像添加到资源文件夹后出现类未找到异常

    该应用程序在模拟器和设备上运行得非常好 添加一组新图像后 它开始在每次运行时 在模拟器上和在设备上显示类未找到异常 当尝试删除一些图像以查找原因时 我在运行时找不到不同的类 编译和打包应用程序不会生成警告或错误 他们甚至得到签名 我得到的一
  • 如何以编程方式锁定 BLACKBERRY 设备(6.0)?

    如何以编程方式锁定黑莓设备 6 0 有一个API叫做 ApplicationManger locksystem true 但在 6 0 中已不再使用 根据BlackBerry OS 7 1 API 文档 http www blackberr
  • 开发 BlackBerry OS6 需要哪个版本的 Blackberry JRE

    我下载了适用于 BlackBerry 的 Eclipse 插件 默认情况下具有 BlackBerry OS 7 运行时 我需要定位 BlackBerry OS 6 和 OS 7 设备 这也适用于 BlackBerry OS 6 还是我需要更
  • 多平台加密java移动存储系统的思路

    您好 我有一些关于在 Android Blackberry 和 J2ME 上实现加密存储 一种加密文件系统 的问题 请阅读 疑问 部分 我密码学大师们需要您的建议 我知道这个问题有点长 可能太冗长 但请尝试读到最后 我有很多相关的问题 我无
  • 在检查条件时消除代码中嵌套 if 的最佳方法是什么?

    我正在用 Java 开发一个 BlackBerry 应用程序 并且有一个存储所有用户设置的选项类 问题是我需要检查一些条件才能知道如何反应 随着我不断添加更多功能 会向用户显示更多 GUI 选项 Options 类中存储更多设置 并且需要检
  • 开发支持 Web 应用程序的移动应用程序的方法

    我的公司构建了自己的项目管理 Web 应用程序 这就像打了类固醇的大本营 该应用程序的核心功能是 创建任务列表 将任务分配给团队成员 跟踪任务项目的工时 我希望构建移动应用程序作为网络应用程序的扩展 移动应用程序必须 重现上述功能 连接到与
  • 黑莓模拟器不会从 eclipse 加载 cod 文件

    我已经安装了 eclipse 和适当的黑莓插件等 我可以很好地构建项目 当我尝试使用模拟器进行调试时 cod 文件被放入模拟器的目录中并且模拟器启动 但我找不到该应用程序 它不在下载目录中或我能看到的其他任何地方 你如何告诉 fledge
  • 如何使 gif 在黑莓 java 上完成后消失?

    我知道如何加载 gif 并让它运行 但是如何让它消失呢 IE 它位于另一个位图背景之上 看起来像与背景交互 我希望它在完成一次后消失 您可以将 gif 设置为不重复并使最终帧 100 透明
  • 如何在 Blackberry Storm 中设置抗锯齿?

    我正在绘制位图 例如 bitmap i new Bitmap 60 60 Graphics g new Graphics bitmap i g setColor Color BLACK g drawLine 现在如何在 g drawLine

随机推荐