1

TableLayoutManager 行内にネストされた LabelField があります。行を特定の高さ (ビットマップの背景と同じ高さ) にしたい。これを実現するために、ネストされた LabelField の layout() メソッドを変更しました。

LabelField lblHours = new LabelField(hours,
            Color.BLACK, Manager.FIELD_VCENTER) {
        protected void layout(int width, int height) {
            super.layout(width, 40 //height of the bitmap);
            setExtent(width, 40 //height of the bitmap);
        }
    };

これにより、TableLayoutManager の行サイズが正常に増加しました。ただし、これを行うと、LabelField は行内の垂直方向の中央に配置されなくなります。それを行う方法に関する提案はありますか?

ありがとう!

4

2 に答える 2

1

上記の答えは、以下の例に示すように、上記の2つのステートメントを入力することを確認してください。

LabelField importanceLabel = new LabelField("Importance: ",LabelField.FIELD_VCENTER | LabelField.FIELD_RIGHT) {
          public void paint(Graphics g) { 
              g.setColor(0x145085); 
              super.paint(g); 
          } 
          protected void layout(int width, int height) {
              super.layout(Math.min(width, this.getFont().getAdvance(this.getText())), 26); //height of the bitmap);
              setExtent(Math.min(width, this.getFont().getAdvance(this.getText())), 26); //height of the bitmap);
          }
      };

これは同じ応答になるでしょう..そして皆さんに感謝します..議論してくれてありがとう。それは私を助けました。

于 2011-09-03T20:23:13.430 に答える
0

に変更setExtent(width, 40)してみてくださいsetExtent(this.getWidth(), 40)。これは、getWidth() が利用可能な幅をすべて取り込もうとしている場合 (これは setExtent() 呼び出しが行っていることです)、機能しない可能性があり、テキストは左揃えで描画されるため、フィールドがそうではないように見えます中央に配置されていませんが、実際にはテーブルのセル全体を占めています。あるいは、これがうまくいかない場合は、できるかもしれませんsetExtent(Math.min(width, this.getFont().getAdvance(this.getText())), 40);

于 2011-05-25T17:35:40.437 に答える