1

私は Blackberry Field を初めて使用します。下の画像のように見える、カスタマイズされた水平スクロール ビューを作成したいと考えています。どんな助けでも感謝されます

ここに画像の説明を入力

Blackberry Simulator 9900 を使用しています。よろしくお願いします。

4

1 に答える 1

0

中央部分はスクロールのみ可能だと思いますよね?

HORIZONTAL_SCROLL (中央のもの) を持つ 1 つの Horizo​​ntalFieldManager が必要です。たとえばHorizontalFieldManager hfm = new HorizontalFieldManager( HORIZONTAL_SCROLL ); 、このマネージャーにカスタム フィールドを追加します。

Custom OuterManager に hfm を追加する必要があります。

ご参考までに、ここに自分のコードを投稿しています...

private class HScroll extends MainScreen{
        public HScroll() {
            super( USE_ALL_WIDTH );
            OuterManager father = new OuterManager( );
            LabelField ll = new LabelField("<");
            father.add(ll);
            HorizontalFieldManager hfm = new HorizontalFieldManager( HORIZONTAL_SCROLL );
            for( int i=0; i<10; i++ ){
                ButtonField btn = new ButtonField(" i " + i);
                hfm.add(btn);
            }
            father.add(hfm);
            LabelField ll1 = new LabelField(">");
            father.add(ll1);
            add(father);
        }

        private class OuterManager extends net.rim.device.api.ui.Manager{

            public OuterManager() {
                super(USE_ALL_WIDTH);
            }

            protected void sublayout(int width, int height) {

                int x = 0;
                Field ff = getField( 0 );
                Field ff2 = getField( 2 );
                setPositionChild(ff, x, 0);
                layoutChild(ff, ff.getPreferredWidth(), ff.getPreferredHeight());

                x = x + ff.getPreferredWidth();
                Field ff1 = getField( 1 );
                setPositionChild(ff1, x , 0);
                layoutChild(ff1, width - ff.getPreferredWidth() - ff2.getPreferredWidth() , ff1.getPreferredHeight());

                x = width - ff2.getPreferredWidth();
                setPositionChild(ff2, x, 0);
                layoutChild(ff2, ff2.getPreferredWidth(), ff2.getPreferredHeight());

                setExtent(width, height);
            }
        }
    }
于 2013-05-09T12:26:00.210 に答える