1

私はブラックベリーが初めてで、質問があります。次のような3つのリストフィールドが連続しています

[ - - - - 一二三 - ]

しかし、1つをスクロールすると、すべてがスクロールします!、フォーカスされたスクロールがスクロールしているときに、他のスクロールを制限するにはどうすればよいですか?

編集

// ListFields
HorizontalFieldManager hfmMain = new HorizontalFieldManager();

HorizontalFieldManager hfmFist = new HorizontalFieldManager(FIELD_LEFT);
hfmFist.add(myListView);

HorizontalFieldManager hfmSecond = new HorizontalFieldManager();
hfmSecond.add(hizabListView);

HorizontalFieldManager hfmThird = new HorizontalFieldManager();
hfmThird.add(paraListView);

hfmMain.add(hfmFist);
hfmMain.add(hfmSecond);
hfmMain.add(hfmThird);

add(hfmMain);

ここに画像の説明を入力

4

2 に答える 2

1

1 つのスクリーン マネージャーに複数のリスト フィールドがあり、下にスクロールしてこのマネージャーを選択すると、スクロール イベントがこれらすべてのフィールドに送信されます。そして、それらすべてが同時にスクロールしています。

すべてのリストフィールドを独自のマネージャーに分けます。

于 2013-07-29T08:33:22.833 に答える
1

Screen重要なのは、これらすべてのマネージャーとフィールドを含むの垂直スクロールを無効にする必要があるということです。

次に、 1 つの水平フィールド マネージャーを作成できます。そして、3 人の垂直フィールド マネージャー。各リストを独自の垂直フィールド マネージャーに配置すると、3 つの垂直フィールド マネージャーすべてが水平フィールド マネージャーに移動します。

私がテストした簡単なプロトタイプを次に示します。

public class ListFocusScreen extends MainScreen implements ListFieldCallback {

   private ObjectListField list1;
   private ListField list2;
   private ListField list3;
   private Bitmap icon2;   // for list 2 cell background
   private Bitmap icon3;   // for list 3 cell background

   public ListFocusScreen() {
      // Do NOT allow vertical scrolling at the Screen level!!
      super(MainScreen.NO_VERTICAL_SCROLL | MainScreen.NO_VERTICAL_SCROLLBAR);

      // A container for the "row" of three side-by-side lists
      HorizontalFieldManager hfm = new HorizontalFieldManager(Field.USE_ALL_WIDTH);

      // Do create a vertical field manager for each list, that scrolls
      VerticalFieldManager vfm1 = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR) {
         protected void sublayout(int maxWidth, int maxHeight) {
            super.sublayout(2 * Display.getWidth() / 3, maxHeight);   // 2/3 width
         }         
      };
      VerticalFieldManager vfm2 = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR) {
         protected void sublayout(int maxWidth, int maxHeight) {
            super.sublayout(Display.getWidth() / 6, maxHeight);       // 1/6 width
         }         
      };
      VerticalFieldManager vfm3 = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR) {
         protected void sublayout(int maxWidth, int maxHeight) {
            super.sublayout(Display.getWidth() / 6, maxHeight);       // 1/6 width
         }         
      };

      Object[] listData1 = new Object[24];
      for (int i = 0; i < listData1.length; i++) {
         // generate fake data for list1
         listData1[i] = String.valueOf(i) + ". Click to Download";
      }
      list1 = new ObjectListField();
      list1.set(listData1);

      list2 = new ListField();
      list2.setCallback(this);
      icon2 = Bitmap.getBitmapResource("octagon.png");
      list2.setSize(15);

      list3 = new ListField();
      list3.setCallback(this);
      icon3 = Bitmap.getBitmapResource("frame.png");
      list3.setSize(15);

      vfm1.add(list1);
      vfm2.add(list2);
      vfm3.add(list3);
      hfm.add(vfm1);
      hfm.add(vfm2);
      hfm.add(vfm3);
      add(hfm);
   }

   public void drawListRow(ListField listField, Graphics graphics, int index,
         int y, int width) {
      // this same method will be used for custom drawing of both lists 2 and 3
      final int PAD = 4;
      String text = (String)get(listField, index);
      if (listField == list2) {
         graphics.drawBitmap(0, y, width, width, icon2, 0, 0);
         graphics.drawText(text, PAD, y + PAD);
      } else if (listField == list3) {
         graphics.drawBitmap(0, y, width, width, icon3, 0, 0);
         graphics.drawText(text, PAD, y + PAD);
      }      
   }

   public Object get(ListField listField, int index) {
      // TODO: normally, get this value from a vector of actual 
      //  data for each list
      return String.valueOf(index);
   }

   public int getPreferredWidth(ListField listField) {
      return Display.getWidth() / 6;
   }

   public int indexOfList(ListField listField, String prefix, int start) {
      return -1;  // no search support
   }   
}

結果

ここに画像の説明を入力

ご覧のとおり、各リストを個別に垂直にスクロールできました。

于 2013-07-30T09:31:21.123 に答える