Установите OnClickListener для элемента SVG - PullRequest
1 голос
/ 12 октября 2011

Скажем, у меня есть элемент SVG, как показано ниже. Как добавить onClickListener?

solved, see below.

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Я предполагаю, что вы имеете в виду FieldChangeListener, а не OnClickListener (неправильная платформа;). SVGImage не является частью объектов, разработанных RIM, поэтому, к сожалению, вы не сможете. Все, что может иметь FieldChangeListner, должно быть подклассом класса net.rim.device.api.ui.Field.

0 голосов
/ 13 октября 2011

На всякий случай, если кому-то интересно, как это делается ...

try {
            InputStream inputStream = getClass().getResourceAsStream("/svg/sphere1.svg");

            _image = (SVGImage)SVGImage.createImage(inputStream, null);   

            _animator = SVGAnimator.createAnimator(_image, "net.rim.device.api.ui.Field");

            _document = _image.getDocument(); 

            _svg123 = (SVGElement)_document.getElementById("123");


        }
        catch (IOException e) { e.printStackTrace(); }
        Field _svgField = (Field)_animator.getTargetComponent();        

        _svgField.setBackground(blackBackground);

        add(_svgField);

        _svg123.addEventListener("click", this, false);
        _svg123.addEventListener("DOMFocusIn", this, false);
        _svg123.addEventListener("DOMFocusOut", this, false);


    }

    public void handleEvent(Event evt) {

        if( _svg123 == evt.getCurrentTarget() && evt.getType() == "click" ){ Dialog.alert("You clicked 123"); }

        if( _svg123 == evt.getCurrentTarget() && evt.getType() == "DOMFocusIn" ) { ((SVGElement) _document.getElementById("outStroke123")).setTrait("fill", "#FF0000");     }
        if( _svg123 == evt.getCurrentTarget() && evt.getType() == "DOMFocusOut" ) { ((SVGElement) _document.getElementById("outStroke123")).setTrait("fill", "#2F4F75");    }

    }
...