暧昧custom_buttonfield的 [英] ambiguous of the custom_buttonfield
问题描述
这是原始的按钮图像。按钮的背景是透明的。
This is the original button image. The background of the button was transparent.
在申请进入的应用程序,该按钮看起来像这个。请看看左上角的按钮。按钮的背景变成了灰色,而不是透明的。
When apply into apps, the button look like this. Please look at top left the button. The background of the button became gray instead of transparent.
这里是Android版本的按钮。
Here is the Android version's button.
不仅按键也全部相同类型的按钮,它的背景是透明的。
Not only the button but also all same type of buttons which background was transparent.
的 custom_buttonfield
public class Custom_ButtonField extends ButtonField {
Bitmap mNormal;
Bitmap mFocused;
Bitmap mActive;
int mWidth;
int mHeight;
private int color = -1;
String text;
public Custom_ButtonField(Bitmap normal, Bitmap focused, Bitmap active) {
super(CONSUME_CLICK | Field.FOCUSABLE | Field.FIELD_HCENTER
| Field.FIELD_VCENTER);
mNormal = normal;
mFocused = focused;
mActive = active;
mWidth = mNormal.getWidth();
mHeight = mNormal.getHeight();
setMargin(0, 0, 0, 0);
setPadding(0, 0, 0, 0);
setBorder(BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
setBorder(VISUAL_STATE_ACTIVE,
BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
}
public Custom_ButtonField(String text, Bitmap normal, Bitmap focused,
Bitmap active, int color) {
super(CONSUME_CLICK | Field.FOCUSABLE | Field.FIELD_HCENTER
| Field.FIELD_VCENTER);
this.color = color;
mNormal = normal;
mFocused = focused;
mActive = active;
mWidth = mNormal.getWidth();
mHeight = mNormal.getHeight();
setMargin(0, 0, 0, 0);
setPadding(0, 0, 0, 0);
setBorder(BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
setBorder(VISUAL_STATE_ACTIVE,
BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
this.text = text;
}
protected void onFocus(int direction) {
super.onFocus(direction);
}
protected void onUnfocus() {
super.onUnfocus();
}
protected void paint(Graphics graphics) {
int fontcontent;
if (Display.getWidth() > 480)
fontcontent = 28;
else if (Display.getWidth() < 481 && Display.getWidth() > 320)
fontcontent = 23;
else
fontcontent = 18;
Bitmap bitmap = null;
switch (getVisualState()) {
case VISUAL_STATE_NORMAL:
bitmap = mNormal;
break;
case VISUAL_STATE_FOCUS:
bitmap = mFocused;
break;
case VISUAL_STATE_ACTIVE:
bitmap = mActive;
break;
default:
bitmap = mNormal;
}
graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(),
bitmap, 0, 0);
graphics.setFont(Font.getDefault().derive(Font.BOLD, fontcontent));
graphics.setColor(color);
graphics.drawText(text, (mNormal.getWidth() - Font.getDefault()
.getAdvance(text)) / 2, ((mNormal.getHeight() - Font
.getDefault().getHeight()) / 2) + 10, DrawStyle.HCENTER
| DrawStyle.VCENTER);
}
public int getPreferredWidth() {
return mWidth;
}
public int getPreferredHeight() {
return mHeight;
}
protected void layout(int width, int height) {
setExtent(mWidth, mHeight);
}
}
(loader)是这里
The loader is here
private Bitmap news = Config_GlobalFunction.Bitmap("icon_news.png");
private Bitmap newsactive = Config_GlobalFunction
.Bitmap("icon_news_active.png");
if (left == 1) {
newsbtn = new Custom_ButtonField(news, newsactive, newsactive) {
protected boolean navigationClick(int status, int time) {
Main.getUiApplication().pushScreen(
new Menu_PopupMenu(thisid));
return true;
}
};
add(newsbtn);
} else if (left == 2) {
backbtn = new Custom_ButtonField(back, backctive, backctive) {
protected boolean navigationClick(int status, int time) {
Main.getUiApplication().popScreen(mainscreen);
return true;
}
};
add(backbtn);
}
if (left == 1) {
field = getField(1);
layoutChild(field, back.getWidth(), back.getHeight());
setPositionChild(field, 10, Height);
} else if (left == 2) {
field = getField(1);
layoutChild(field, news.getWidth(), news.getHeight());
setPositionChild(field, 10, Height);
}
如果我这样设置 layoutChild(场,60,60);
,那么它有没有问题,背后的灰色没了。但是,我不能设置固定的,必须动态大小。
if I set like this layoutChild(field, 60, 60);
, then it got no problem, the behind gray color no more. However, I cannot set fixed and must dynamic size.
推荐答案
调用这个的setBackground(BackgroundFactory.createBitmapBackground(位图));
而不是 graphics.drawBitmap(0,0,bitmap.getWidth(),bitmap.getHeight()
在
位图,0,0); Custom_ButtonField
这篇关于暧昧custom_buttonfield的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!