0

大家好,我已经实现了自定义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);
                }

            }};

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

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

如何防止无限滚动?

提前致谢 !!!

4

2 回答 2

3

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

于 2011-12-28T17:41:45.220 回答
2

正如 Tamar 所说,字段的虚拟宽度是要跟踪的关键概念。

你可以在这里看到我对一个非常相似的问题的解决方案。我提供了一个完整的代码示例,它可能与您正在尝试做的事情相距不远。我使用的代码更进一步,动态地将滚动限制到文本当前到达的末尾。如果您不这样做,而只是设置一个恒定的虚拟宽度,那么您可以让该字段实际上向右滚动太远。通过动态调用setVirtualExtent(),您总是获得足够的滚动,但不会太多。

于 2012-05-22T11:09:35.453 回答