具有固定大小的 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 BrowserField 中缓存

    我正在创建一个 Blackberry 应用程序来显示某个站点的全屏 Web 视图 我有一个可以正常显示的工作浏览器字段 但从页面到页面的导航速度比本机浏览器慢 浏览器字段似乎没有内置缓存 导致加载时间很慢 当我添加以下代码来管理缓存时 该站
  • 黑莓 - 等待屏幕[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在黑莓java开发中开发一个应用
  • Blackberry Web Works 如何在每次启动应用程序时触发事件

    h1 Hello World h1 我有一个使用 Blackberry WebWorks 构建的应用程序 与上
  • 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:读取项目中打包的文本文件(更快)

    我尝试过这种方法 但对于稍大的文本文件来说 它确实很慢 有谁知道阅读项目中包含的纯文本文件的更好方法 有没有办法使用 FileConnection 使用信息组合找出答案 IOUtilities streamToBytes is 直接在输入流
  • 如何在黑莓手机中制作状态栏?

    我想在屏幕底部设置状态栏 它应该在左侧和右侧显示一个按钮 你可以在下面看到我的屏幕 我的代码是这样的 private void BottomLayout Bitmap topBg Bitmap getBitmapResource Image
  • 在检查条件时消除代码中嵌套 if 的最佳方法是什么?

    我正在用 Java 开发一个 BlackBerry 应用程序 并且有一个存储所有用户设置的选项类 问题是我需要检查一些条件才能知道如何反应 随着我不断添加更多功能 会向用户显示更多 GUI 选项 Options 类中存储更多设置 并且需要检
  • 如何在黑莓中创建选项卡栏应用程序用户界面...?

    如何在 BB 中制作选项卡栏基础应用程序 应用程序的每个屏幕都将有此选项卡 并且每个选项卡将有单独的导航控制器堆栈 以便我们可以轻松地推送屏幕 您必须使用水平字段管理器创建选项卡栏 然后将字段添加到水平字段管理器 然后将管理器设置为屏幕的标
  • 如何在黑莓 7 中捕获列表字段滚动到底部

    我有一个包含许多数据的列表字段 首先我从服务器加载 10 条记录 我想在滚动移动到底部时捕获事件 以便我可以从服务器加载更多记录 我实现了 ScrollChangeListener public class DataListScreen e
  • 针对多个版本的 BlackBerry 操作系统进行开发

    在针对多个版本的 BlackBerry 操作系统进行开发之前 我需要了解什么 有什么好的资源吗 这些链接应提供所需的资源
  • 有没有办法通过 Exchange PowerShell 查询谁是 activesync/bb 用户?

    有没有办法使用 powershell Exchange 插件查询 Exchange 2007 来区分谁是活动同步用户或黑莓用户 BBES 通常使用有权访问所有邮箱的服务帐户来执行其操作 您需要查看 BBES 服务器本身以找出哪些用户处于活动
  • 如何在 Blackberry Storm 中设置抗锯齿?

    我正在绘制位图 例如 bitmap i new Bitmap 60 60 Graphics g new Graphics bitmap i g setColor Color BLACK g drawLine 现在如何在 g drawLine
  • 适用于 BlackBerry 应用程序的 OAuth 库(适用于 Twitter 客户端)

    是否有可用于与 BlackBerry 应用程序集成的 OAuth 库 我想从我的应用程序发布一条推文 但找不到任何有助于登录的内容 找到了吗this URL http developerlife com tutorials p 648但无法
  • 返回数据集的 kSoap 和 .Net Web 服务

    我知道使用数据集是一个很大的罪恶 但由于该服务不在我的控制之下 并且创建代理服务的前景是不可能的 我想看看是否有人创建了可以使用 kSoap 序列化器反序列化的类结构 或者我是否吸错了东西 同时要启动它 看看是否可行 以下是预期的结果数据
  • 弹出到主屏幕

    在我的应用程序中 我一个接一个地喜欢一些屏幕 并且我需要随时弹出到主屏幕 有什么方法可以找出活动屏幕是否是第一个 或者 可能有什么功能可以弹出到根屏幕而不循环弹出到以前的屏幕 EDIT换句话说 我需要我的应用程序在单击黑莓 后退 按钮时转到
  • 自定义列表字段点击事件

    我正在编写一个应用程序 其中我创建了用于显示列表视图的自定义列表字段 我的 CustomListField 包含连续的一个图像和文本 我正在通过单击列表字段行获取字段更改侦听器 但我也想将字段更改侦听器放在图像上 谁能告诉我我该怎么做 这是
  • 在 OS 5 模拟器上安装 OTA 黑莓应用程序时遇到问题

    我正在尝试在 eclipse helios 中使用 apache tomcat 5 5 测试我的 bb 应用程序的 OTA 部署 我尝试从黑莓 OS 5 OS 6 和 OS 7 模拟器进行 OTA 安装 这些应用程序已下载并安装在 OS 6
  • 黑莓 - 带动画的加载/等待屏幕

    有没有办法显示 加载 屏幕带动画在黑莓手机上 选项 PME动画内容 多线程 图像集 定时器 计数器 标准轮辋 API 其他方式 有这个吗 Thanks 费明 安东尼 1 谢谢大家 你们给了我部分答案 我的最终解决方案 1 创建或生成 免费
  • 有人尝试过用 C 或 C++ 为 Blackberry 平台进行开发吗?

    根据我在嵌入式计算方面的经验 我得到的每一个迹象都是 做这样的事情需要昂贵的设备才能访问平台 ICE 调试器 JTAG 探针 I2C 编程器等 但我一直想知道是否一些雄心勃勃的黑客已经找到了一种在黑莓设备上加载本机代码的方法 任何人 编辑

随机推荐