首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么整个HorizontalFieldManager都可以点击?

为什么整个HorizontalFieldManager都可以点击?
EN

Stack Overflow用户
提问于 2012-10-25 14:25:15
回答 1查看 79关注 0票数 0

我已经在MainScreen中的setStatus方法上添加了按钮。现在整个HFM都可以点击了,我不知道为什么?请指点一下。代码如下:

代码语言:javascript
复制
 setStatus(setFooter());
    ...
    public Field setFooter() {

            HorizontalFieldManager hfm1 = new HorizontalFieldManager(USE_ALL_WIDTH|Manager.NO_HORIZONTAL_SCROLL|Manager.NO_HORIZONTAL_SCROLLBAR);

            Bitmap bm;
            bm = Bitmap.getBitmapResource("statusImage.PNG");
            Background bg = BackgroundFactory.createBitmapBackground(bm, Background.POSITION_X_LEFT, Background.POSITION_Y_BOTTOM, Background.REPEAT_SCALE_TO_FIT);
            hfm1.setBackground(bg);
            hfm1.add(new DummyField(bm.getHeight()));
            hfm1.add(backButton);
            hfm1.add(nextButton);

            return hfm1;
            }

虚拟字段:

代码语言:javascript
复制
class DummyField extends Field {
    private int logoHeight;

    public DummyField(int height) {
        logoHeight = height;
    }

    protected void layout(int width, int height) {
        setExtent(1, logoHeight);
    }

    protected void paint(Graphics graphics) {
    }
}

我还覆盖了这些方法(lionscribe implementation),以避免HFM被单击,但它不起作用:

代码语言:javascript
复制
protected boolean touchEvent(TouchEvent message)
    {
     int event = message.getEvent();
     if (event == TouchEvent.CLICK || event == TouchEvent.UNCLICK)
     {
      // Ignore clcik events that happen outside any fields
      if (getFieldAtLocation(message.getX(1), message.getY(1)) == -1)
       return true;    // kill the event
     }
     return super.touchEvent(message);
    }

    // The regular getFieldAtLocation returns wrong values in open spaces in complex managers, so we override it
    public int getFieldAtLocation(int x, int y)
    {
     XYRect rect = new XYRect();
     int index = getFieldCount() -1;
     while (index >= 0)
     {
      getField(index).getExtent(rect);
      if (rect.contains(x, y))
       break;
      --index;
     }
     return index;
    }
EN

回答 1

Stack Overflow用户

发布于 2012-10-29 14:05:52

我能够在Peter's post的帮助下修复它,我必须覆盖CustomButtonField中的touchEvent方法,如果字段边界条件返回false,则在该方法中调用navigationClick

代码语言:javascript
复制
if(!( x < 0 || y < 0 || x > getExtent().width || y > getExtent().height )) {
   navigationClick(x,y);
}  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13062784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档