我创建了一个自定义的ButtonField类,我将图像作为按钮。但是,我希望能够选择这个图像并知道它已被选中,无论是通过部分突出显示它还是围绕它放置一个正方形,无论如何。我的UI中有一个BitmapField,当我选择它时会以蓝色突出显示,但是我使用ImageButtonField的其他图像没有蓝色突出显示。我不希望位图在选中时完全消失。
这是代码:
package mypackage;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Characters;
import net.rim.device.api.ui.component.BitmapField;
public class ImageButtonField extends BitmapField{
public ImageButtonField(Bitmap image) {
super(image);
}
public boolean isFocusable() {
return true;
}
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(0);
return true;
}
protected boolean trackwheelClick(int status, int time) {
fieldChangeNotify(0);
return true;
}
protected boolean keyChar(char character, int status, int time) {
if(Characters.ENTER == character || Characters.SPACE == character) {
fieldChangeNotify(0);
return true;
}
return super.keyChar(character, status, time);
}
}
任何帮助修改此类以使其有效都会有很大帮助。我试图让这项工作没有成功!
答案 0 :(得分:4)
要删除默认样式属性,您可以添加以下方法:
protected void applyTheme(Graphics arg0, boolean arg1) {
}
protected void drawFocus(Graphics graphics, boolean on) {
}
您可以通过检查焦点状态来覆盖绘制方法并绘制任何所需的颜色,例如下面的代码将在位图图像上绘制一个红色透明层。
protected void paint(Graphics graphics) {
super.paint(graphics);
if (isFocus()) {
graphics.setGlobalAlpha(128);
graphics.setColor(0xFF0000);
graphics.fillRect(0, 0, getWidth(), getHeight());
}
}
其实我不太清楚你的问题:)。