2010-06-12 3 views
0

Я создал пользовательскую кнопку, и я помещаю кучу Custombuttons в verticalfieldManager, я выровнял вертикальный менеджер по центру в центре. когда я создаю кнопку buttonField по умолчанию, тогда диспетчер verticalfield может выравнивать кнопочное поле в центре. но когда я назначаю custombuttonfield в verticalField Manager, он не выравнивается по центру.CustomButton Поле не выравнивается по центру

вот мой custombuttoncode

public CustomButtonField(String label,long style) { 
    super(style); 
    this.label = label; 
    onPicture = Bitmap.getBitmapResource(onPicturePath); 
    font = getFont(); 
    this.setPadding(5,5, 5, 5); 
} 

public String getLabel() { 
    return label; 
} 

public int getPreferredHeight() { 
    return onPicture.getHeight(); 
} 

public int getPreferredWidth() { 
    return onPicture.getWidth(); 
} 

protected void layout(int width , int height) { 
    setExtent(Math.min(width, Display.getWidth()), Math.min(height,getPreferredHeight())); 
} 

protected void paint(Graphics graphics) { 
    int texty =(getHeight()-getFont().getHeight())/2; 

    if (isFocus()) { 
     graphics.setColor(Color.BLACK); 
     graphics.drawBitmap(0, 0, getWidth(), getHeight(),onPicture , 0, 0); 
     graphics.setColor(Color.WHITE); 
     graphics.setFont(font); 
     graphics.drawText(label,0,texty,DrawStyle.ELLIPSIS,getWidth()); 
    } else { 
     graphics.drawBitmap(0, 0, getWidth(), getHeight(),onPicture , 0, 0); 
     graphics.setColor(Color.WHITE); 
     graphics.setFont(font); 
     graphics.drawText(label,0,texty,DrawStyle.ELLIPSIS,getWidth()); 
    } 
} 

public boolean isFocusable() { 
    return true; 
} 

protected void onFocus(int direction) { 
    super.onFocus(direction); 
    invalidate(); 
} 

protected void onUnfocus() { 
    super.onUnfocus(); 
    invalidate(); 
} 

protected boolean navigationClick(int status, int time) { 
    fieldChangeNotify(0); 
    return true; 
} 

protected boolean keyChar(char character, int status, int time) { 
    if (character == Keypad.KEY_ENTER) { 
     fieldChangeNotify(0); 
     return true; 
    } 
    return super.keyChar(character, status, time); 
} 

}

ответ

2

При создании кнопки нужно передать флаг Field.FIELD_HCENTER в качестве одного из флагов стиля.

CustomButtonField button = new CustomButtonField("TestLabel", Field.FIELD_HCENTER); 

 Смежные вопросы

  • Нет связанных вопросов^_^