2011-04-19 41 views
0

下面的代碼定義了一個帶有兩個字段的水平字段管理器。我怎樣才能修改代碼,以便只在被添加的兩個字段上設置背景而不是整個管理器。請注意,即時通訊不會嘗試將單個背景圖像添加到每個字段,而是跨越兩個字段的共享背景圖像。自定義Horizo​​ntalFieldManager中兩個字段後面的背景圖像

LabelField label = new LabelField("name"); 

      TextField e = new TextField(Field.FOCUSABLE); 

      final Bitmap b = Constants.SETTINGS; 
      final Background bg = BackgroundFactory.createBitmapBackground(Constants.SETTINGS); 

      HorizontalFieldManager manager = new HorizontalFieldManager() 
      { 
       public void sublayout (int width, int height) 
       { 

        Field field; 
        int x = 0; 

        super.sublayout(b.getWidth(), height); 
        super.setExtent(b.getWidth(), height); 
        for (int i = 0; i < getFieldCount(); i++) 
        { 
         field = getField(i); 
         layoutChild(field, Display.getWidth()/2, height); 
         setPositionChild(field, x, 10); 
         x += Display.getWidth()/2; 
        } 
       } 
      }; 
      manager.add (label); 
      manager.add (e); 
      add (manager); 

Image of desired effect

+0

我從代碼中瞭解到,您正在嘗試添加兩個字段,每個字段佔用一半的屏幕?在提供可能與您想要做的事完全無關的解決方案之前,請先檢查一下。 – jprofitt 2011-04-19 16:48:10

+0

那是正確的。標籤字段和文本字段每個都佔用屏幕一半的常見圖像背景。我附上了所需效果的截圖。謝謝。 – 2011-04-19 20:00:58

回答

1

相反比把它們放在一個自定義的經理,可能更容易只覆蓋Fields的佈局()調用是

protected void layout(int width, int height) { 
    super.layout(width, height); 
    setExtent(Display.getWidth()/2, this.getHeight()); 
} 

,然後你可以只使用一個正常的Horizo​​ntalFieldManager您可以設置背景和填充( hfm.setPadding(10, 10, 10, 10);)。添加填充將減少字段的可用寬度,因此您應該在layout()調用中減小它們的寬度。

+0

嗨jprofitt ...我已經覆蓋此佈局方法,但得到編譯時錯誤,「無法從管理器覆蓋最終的方法」 – iAmitWagh 2011-11-03 12:45:14

+0

在'經理'你通常必須做的在'sublayout()'而不是'layout()'中工作,因爲它們將其聲明爲final – jprofitt 2011-11-03 13:14:50

1

可以相互抵消他們的個人背景的一些花哨,昂貴的位圖步法(數學)「共享」一個圖像使用的setBackground()出現,或者你可以重寫其繪製方法通過根據相對位置「移動」整個位圖的能力來實現相同的效果... 那是什麼? :)

編輯: 創建一個自定義字段中使用您的位圖和餵養它,你想什麼內容,然後覆蓋油漆畫你喜歡什麼,你喜歡它...

protected void paint(Graphics g){ 
    // conditionals, etc 
    g.drawBitmap(x, y, width, height, bitmap, left, top); 
    // color changes, etc 
    g.drawText(yourText); 
    // clean up 
} 
+0

我想要兩個字段共享一個共同的圖像背景。我附上了即時通訊試圖實現的截圖。謝謝。 – 2011-04-19 20:02:28

+0

請參閱上面的編輯sry從手機早期工作大聲笑 – Dan 2011-04-19 22:49:37

相關問題