我想创建一个有三种状态的图像按钮:
正常和专注非常简单。我使用着名的类BaseButtonField和BitmapButtonField作为基础。我的问题是那个
protected boolean trackwheelClick(int status, int time)
未被调用。我的按钮从Field
延伸,并以Field.FOCUSABLE | Field.EDITABLE
作为样式。我错过了什么?
答案 0 :(得分:2)
您可以尝试使用"Tutorial: Creating a custom button"官方RIM文档。
我认为这就是你要找的东西
答案 1 :(得分:1)
以下代码是底部菜单栏的自定义按钮字段。这对您的任务很有用。
public class PictureBackgroundButtonField extends BitmapField {
MyTooltip _tooltip;
Bitmap mNormal;
Bitmap mFocused;
Bitmap mActive;
String text;
int mWidth;
int mHeight;
int xpos1;
public PictureBackgroundButtonField(String text,Bitmap normal, Bitmap focused, int xpos)
{
super(normal,FOCUSABLE);
mNormal = normal;
mFocused = focused;
mWidth = mNormal.getWidth();
mHeight = mNormal.getHeight();
this.text=text;
setMargin(0, 0, 0, 0);
setPadding(0, 0, 0, 0);
xpos1 = xpos;
}
public String getText()
{
return text;
}
public void setText(String text)
{
this.text=text;
}
protected void paint(Graphics graphics) {
Bitmap bitmap = mNormal;
if(isFocus())
{
bitmap = mFocused;
}
else
{
bitmap = mNormal;
}
graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(), bitmap, 0, 0);
}
protected void drawFocus(Graphics graphics, boolean on) {
}
protected void onFocus(int direction) {
//lbt.setText(text);
invalidate();
super.onFocus(direction);
if ( _tooltip != null ) {
_tooltip.removeToolTip();
_tooltip = null;
}
// Display tooltip at 50,50 for 5 seconds
_tooltip = MyTooltip.addToolTip(UiApplication.getUiApplication(), text, xpos1, 270, 1);
}
protected void onUnfocus() {
//lbt.setText("");
invalidate();
super.onUnfocus();
if ( _tooltip != null ) {
// We have displayed a Tooltip - remove it
_tooltip.removeToolTip();
_tooltip = null;
}
}
public int getPreferredWidth() {
return mWidth;
}
public int getPreferredHeight() {
return mHeight;
}
protected void layout(int width, int height) {
setExtent(mWidth, mHeight);
}
}
答案 2 :(得分:0)
当某个字段处于“有效”或“已按下”状态时,其可视状态将设置为Field.VISUAL_STATE_ACTIVE
。如果您通过调用paint()
在Field.getVisualState()
方法中检查此内容,则可以更改按下按钮时的显示方式。