如何在黑莓上突出显示焦点自定义按钮域(ImageButtonField)?
Posted
技术标签:
【中文标题】如何在黑莓上突出显示焦点自定义按钮域(ImageButtonField)?【英文标题】:How to highlight focused custom buttonfield (ImageButtonField) on Blackberry? 【发布时间】:2012-02-13 16:18:48 【问题描述】:我创建了一个自定义 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);
任何修改这个类以使其工作的帮助都会有很大帮助。我尝试完成这项工作没有成功!
【问题讨论】:
【参考方案1】:要删除默认样式属性,您可以添加以下方法:
protected void applyTheme(Graphics arg0, boolean arg1)
protected void drawFocus(Graphics graphics, boolean on)
您可以覆盖paint方法并通过检查焦点状态来绘制您想要的任何东西,例如以下代码将在位图图像上绘制一个红色透明层。
protected void paint(Graphics graphics)
super.paint(graphics);
if (isFocus())
graphics.setGlobalAlpha(128);
graphics.setColor(0xFF0000);
graphics.fillRect(0, 0, getWidth(), getHeight());
其实我没有很好地理解你的问题:)。
【讨论】:
谢谢!天哪,我花了这么长时间才弄清楚这一点!你对我的帮助比你知道的还要多! :D以上是关于如何在黑莓上突出显示焦点自定义按钮域(ImageButtonField)?的主要内容,如果未能解决你的问题,请参考以下文章