0

アプリケーションで 2 つのフィールドを、1 つを画面の左端に、もう 1 つを左端に揃えたいと考えています。そのために、GridLayoutManager クラスを使用しています。これが私のコードです

GridFieldManager gridFieldManager = new GridFieldManager(2,2, GridFieldManager.PREFERRED_SIZE_WITH_MAXIMUM); 

gridFieldManager.add(new ButtonField("Button One"), Field.FIELD_HCENTER);  
gridFieldManager.add(new ButtonField("Button Two"), Field.FIELD_RIGHT);  

gridFieldManager.add(new ButtonField("HC", Field.FIELD_HCENTER)); 
gridFieldManager.add(new ButtonField("RT", Field.FIELD_RIGHT));

add(gridFieldManager);

そして、これがシミュレーターでの私の出力です

ここに画像の説明を入力

ボタン 2 を画面の右端に揃えるのを手伝ってくれる人はいますか? どんな助けでも大歓迎です。

4

4 に答える 4

3

基本的には、すべて配置フラグとグリッドの列プロパティの問題です。

GridFieldManagerスタイルを に変更し、Manager.USE_ALL_WIDTH列のプロパティを に設定するとGridFieldManager.AUTO_SIZE、使用可能なすべてのスペースが 2 つの列に均等に分割されます。

gridFieldManager.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0);
gridFieldManager.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0);

次のコード スニペット

GridFieldManager gridFieldManager = new GridFieldManager(2,2, Manager.USE_ALL_WIDTH); 
gridFieldManager.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0);
gridFieldManager.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0);

gridFieldManager.add(new ButtonField("Button One"), Field.FIELD_LEFT);  
gridFieldManager.add(new ButtonField("Button Two"), Field.FIELD_RIGHT);  
gridFieldManager.add(new ButtonField("HC"), Field.FIELD_LEFT); 
gridFieldManager.add(new ButtonField("RT"), Field.FIELD_RIGHT);

add(gridFieldManager);

生産する

ここに画像の説明を入力


このわずかに変更されたコード スニペット

GridFieldManager gridFieldManager = new GridFieldManager(1,2, Manager.USE_ALL_WIDTH); 
gridFieldManager.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0);
gridFieldManager.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0);

VerticalFieldManager vfmLeft = new VerticalFieldManager();
vfmLeft.add(new ButtonField("Button One", Field.FIELD_HCENTER));  
vfmLeft.add(new ButtonField("HC", Field.FIELD_HCENTER)); 
gridFieldManager.add(vfmLeft, Field.FIELD_LEFT);  

VerticalFieldManager vfmRight = new VerticalFieldManager();
vfmRight.add(new ButtonField("Button Two", Field.FIELD_HCENTER));  
vfmRight.add(new ButtonField("RT", Field.FIELD_HCENTER));
gridFieldManager.add(vfmRight, Field.FIELD_RIGHT);  

add(gridFieldManager); 

生産する

ここに画像の説明を入力


最後に、使用可能なスペースが 2 つの列に均等に分割されることについて前に述べたことを説明するために、次のコード スニペットを使用します。

GridFieldManager gridFieldManager = new GridFieldManager(1,2, Manager.USE_ALL_WIDTH | Manager.USE_ALL_HEIGHT); 
gridFieldManager.setColumnProperty(0, GridFieldManager.AUTO_SIZE, 0);
gridFieldManager.setColumnProperty(1, GridFieldManager.AUTO_SIZE, 0);
gridFieldManager.setRowProperty(0, GridFieldManager.AUTO_SIZE, 0);

VerticalFieldManager vfmLeft = new VerticalFieldManager(Manager.USE_ALL_WIDTH | Manager.USE_ALL_HEIGHT);
vfmLeft.setBackground(BackgroundFactory.createSolidBackground(Color.CYAN));
gridFieldManager.add(vfmLeft);  

VerticalFieldManager vfmRight = new VerticalFieldManager(Manager.USE_ALL_WIDTH | Manager.USE_ALL_HEIGHT);
vfmRight.setBackground(BackgroundFactory.createSolidBackground(Color.GRAY));
gridFieldManager.add(vfmRight);  

add(gridFieldManager);    

同じサイズの 2 つの列を生成します。

ここに画像の説明を入力

于 2012-04-10T02:23:33.510 に答える
2

GridFieldManagerの代わりにJustifiedHorizo ​​ntalFieldManagerを使用する必要があるようです。JustifiedHorizo​​ntalFieldManagerは、BlackBerry SDKに含まれている標準のマネージャーではありませんが、開発者がよりリッチなUIインターフェイスを構築できるように後でRIMによってリリースされた一連のUIコンポーネントのメンバーです。ここからコードをダウンロードし、プロジェクトに追加してから、次の行を含める必要があります。

JustifiedHorizontalFieldManager justifiedManager = new JustifiedHorizontalFieldManager(buttonOne, buttonTwo, false, USE_ALL_WIDTH );
于 2012-04-04T13:38:27.157 に答える
2

以下のクラスをご利用ください。

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.container.HorizontalFieldManager;

public class HFMLeftFieldRightField extends HorizontalFieldManager {

 private Field leftField;
 private Field rightField;

 private final static int TOP_MARGIN = 0;
 private final static int LEFT_MARGIN = 30;

 public HFMLeftFieldRightField() {
  super(USE_ALL_WIDTH);
 }

 public HFMLeftFieldRightField(boolean isQatari) {
  super(USE_ALL_WIDTH | Field.FIELD_LEFT);
 }

 public void sublayout(int maxWidth, int maxHeight) {

  super.sublayout(maxWidth, maxHeight);
  int width = getWidth();

  if (rightField != null) {
   int x = width - rightField.getWidth() - LEFT_MARGIN;
   int y = TOP_MARGIN;
   setPositionChild(rightField, x, y);
  }
  if (leftField != null) {
   int y = TOP_MARGIN+rightField.getHeight()/5;
   int x = LEFT_MARGIN;
   setPositionChild(leftField, 0, y);
  }

  setExtent(maxWidth, rightField.getHeight() + TOP_MARGIN * 2);
 }

 public void setLeftButton(Field leftField) {
  this.leftField = leftField;
super.add(leftField);
 }

 public void setRightButton(Field rightField) {
  this.rightField = rightField;
  super.add(rightField);
 }


}

そして、この方法でフィールドを追加します。

HFMLeftFieldRightField hfm = new HFMLeftFieldRightField();
hfm.setLeftButton(new EditField("Left"));
hfm.setRightButton(new EditField("Right"));
add(hfm);

詳細http://keraisureshvblackberry.blogspot.in/2012/02/there-are-very-common-there-there-are.html

役立つことを願っています..

于 2012-04-04T14:05:51.097 に答える
0

gridFieldManager コンストラクターのスタイル パラメーターを GridFieldManager.USE_ALL_WIDTH に変更します。

このようになるはずです

GridFieldManager gridFieldManager = new GridFieldManager(2,2,GridFieldManager.USE_ALL_WIDTH ); 
于 2012-04-04T12:45:08.353 に答える