как отключить бесконечную прокрутку в BasicEditField - PullRequest
0 голосов
/ 28 декабря 2011

HI все, что у меня есть, реализовано Custom 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 выглядит хорошо с Backgroundimage и hint, но проблема в том, что когда я ничего не вводю в текстовое поле, он работает как бесконечная прокрутка.я установил Horizontalfield ширина зависит от BasiceditField, но его ширина по умолчанию установлена ​​на неограниченный.

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

как предотвратить бесконечную прокрутку?

Заранее спасибо !!!

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Что такое виртуальная ширина от HorizontalFieldManager ?Это относится к прокручиваемому пространству, тогда как ширина относится к экстенту на экране.Вы можете попробовать расширить HorizontalFieldManager и переопределить метод подслоя, вызвав в нем setVirtualExtent .

2 голосов
/ 22 мая 2012

Как сказала Тамар, Виртуальная ширина поля является ключевой концепцией для отслеживания.

Вы можете увидеть мое решение для очень похожего вопроса здесь . Я приведу полный пример кода, который, вероятно, не слишком далек от того, что вы пытаетесь сделать. Код, который я использую, делает шаг вперед и динамически ограничивает прокрутку только до конца того места, где в данный момент находится текст. Если вы этого не сделаете, а просто установите одну константу virtual width , тогда вы можете сделать так, чтобы поле действительно прокручивалось слишком далеко вправо. Динамически вызывая setVirtualExtent(), вы всегда получаете просто достаточную прокрутку, но не слишком много.

...