如何在BasicEditField中禁用无限滚动

时间:2011-12-28 12:18:12

标签: blackberry textfield horizontal-scrolling blackberry-storm blackberry-basiceditfield

我已经实现了自定义BasicEditField来设置提示并输入长文本。

请参阅我的代码

vfm_searchBox = new VerticalFieldManager()
        {
            //Main.Quicksearchinput is background image for inputtext
            public void paint(Graphics g)
            {   
                g.setColor(Color.WHITE);
                g.drawBitmap(0,0,Main.Quicksearchinput.getWidth(),Main.Quicksearchinput.getHeight(),Main.Quicksearchinput,0,0);
                super.paint(g);
            }}

有一个HorizontalFieldManager可以滚动文字。

hfm_searchBox = new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL) ;

输入文字有一个Basiceditfield

txtSearch = new BasicEditField(BasicEditField.NO_NEWLINE)
        {
            public void paint(Graphics g)
            {
                if(super.getText().length() == 0)
                {
                    g.setColor(Color.GRAY);
                    g.setFont(g.getFont().derive(Font.PLAIN,18));
                    g.drawText("Enter Event title or subtitle", 0, 0);
                    super.paint(g);
                }
                else
                {
                    g.setColor(Color.BLACK);
                    super.paint(g);
                }

            }};

BasicEditFieldBackgroundimagehint看起来不错,但问题是,当我在textfield中没有任何输入时,它就像无限滚动一样工作。我已将Horizontalfield宽度设置为取决于BasiceditField,但默认情况下其宽度设置为无限制。

hfm_searchBox.add(txtSearch);
vfm_searchBox.add(hfm_searchBox);

如何防止无尽的滚动?

先谢谢!!!

2 个答案:

答案 0 :(得分:3)

Horizo​​ntalFieldManager的virtual width是什么?这指的是可滚动空间,而宽度指的是屏幕上的范围。您可以尝试扩展Horizo​​ntalFieldManager并覆盖sublayout方法,在其中调用setVirtualExtent

答案 1 :(得分:2)

正如Tamar所说,Field的虚拟宽度是追踪的关键概念。

你可以see my solution to a very similar question here。我提供了一个完整的代码示例,可能与您尝试的内容相差不远。我使用的代码更进了一步,并动态地将滚动限制到文本当前到达的末尾。如果您不这样做,只需设置一个常量虚拟宽度,那么您可以让该字段实际向右滚动太远。通过动态调用setVirtualExtent(),您总是可以足够滚动,但不会太多。