Codenameone SwipeableContainer不';无法在Android上正常工作

Codenameone SwipeableContainer不';无法在Android上正常工作,codenameone,Codenameone,我对SwipeableContainer有一个问题,这个问题只发生在Android上 我是这样说的: this.buttonRemoveExam = new Button(); this.buttonRemoveExam.getAllStyles().setPadding(0, 0, 0, 0); this.buttonRemoveExam.getAllStyles().setMargin(0, 0, 0, 0); this.buttonRemoveExam.setIcon(REMOVE); t

我对SwipeableContainer有一个问题,这个问题只发生在Android上

我是这样说的:

this.buttonRemoveExam = new Button();
this.buttonRemoveExam.getAllStyles().setPadding(0, 0, 0, 0);
this.buttonRemoveExam.getAllStyles().setMargin(0, 0, 0, 0);
this.buttonRemoveExam.setIcon(REMOVE);
this.buttonRemoveExam.setPressedIcon(REMOVE_PRESSED);
this.containerTop = new Container(new BoxLayout(BoxLayout.X_AXIS));
this.containerTop.setUIID("ContainerScoreGraphique");       
this.containerTop.addComponent(labelNameScore);
this.containerTop.addComponent(labelDateExam);
this.containerTop.addComponent(containerButtons);
this.swipeableContainer = new SwipeableContainer(buttonRemoveExam, containerTop);
问题是,当向右滑动时,按钮RemoveExam无法正确显示(仅1或2像素)

我已经在Android Studio中调试过了。我将断点放在SwipeableContainer的动画方法中。它调用topWrapper.setX(100):

@Override
public boolean animate() {
    if (openCloseMotion != null) {
        int val = openCloseMotion.getValue();
        if (openedToRight) {
            topWrapper.setX(val);
        } else {
            topWrapper.setX(-val);
        }

        repaint();
        boolean finished = openCloseMotion.isFinished();
        if (finished) {
            //getComponentForm().deregisterAnimated(this);
            openCloseMotion = null;
            if(!open){
                bottomRightWrapper.setVisible(false);
                bottomLeftWrapper.setVisible(false);
                openedToLeft = false;
                openedToRight = false;
            }else{
                dispatcher.fireActionEvent(new ActionEvent(this,ActionEvent.Type.Swipe));                
            }
        }
        return !finished;
    }
    return false;
}
我在模拟器和iOS版本上没有问题



谢谢

无法更改零部件的X坐标,因为实际坐标由布局管理器设置。设置坐标唯一有效的情况是,如果您打算执行
animateLayout
类型的操作,在这种情况下,只有在没有
revalidate
的情况下,此操作才会起作用。

您无法更改组件的X坐标,因为实际坐标是由布局管理器设置的。设置坐标唯一有效的情况是,如果您打算执行
animateLayout
类型的操作,在这种情况下,只有在没有
revalidate
的情况下,该操作才会起作用。

我刚刚在android上用厨房水槽演示试用了刷卡容器,结果成功了。有没有可能安卓系统中的图标坏了?如果您将文本设置为按钮,它是否有效?我只尝试了文本,但根本不起作用。对于图像,它显示位(1或2像素)。仅供参考,我用Android 6.0.1在三星tab(galaxy tab A 2016)上运行它。如果你使用Android皮肤,它会在模拟器中发生吗?好主意,但Android皮肤没有问题。我也试着把按钮放在右边,但同样的行为在该设备的厨房水槽演示(在“联系人”下)中可以刷卡吗?我刚刚在我的android上用厨房水槽演示试用了刷卡容器,它成功了。有没有可能安卓系统中的图标坏了?如果您将文本设置为按钮,它是否有效?我只尝试了文本,但根本不起作用。对于图像,它显示位(1或2像素)。仅供参考,我用Android 6.0.1在三星tab(galaxy tab A 2016)上运行它。如果你使用Android皮肤,它会在模拟器中发生吗?好主意,但Android皮肤没有问题。我也试着将按钮放在右边,但同样的行为在该设备中的厨房水槽演示(在contacts下)是否可以刷卡?我在之前的评论中提到的关于“setX”的问题实际上位于CodeName一侧(SwipeableContainer.java的动画方法),这是我最初的想法,但后来你提到你编辑了它。是否可能在您的代码中触发重新验证/重新绘制或其他方法?我已经在Android studio中的codenameone源代码中对其进行了编辑(调试时)。我的代码中没有重新验证或重新绘制。我认为一个好主意可能是重构SwipeableContainer类来更改边距,而不是X位置,这并不总是有效的,我倾向于同意,但我没有编写组件,所以我不确定其含义。请提交一个问题并参考这个问题,我会问。我在之前的评论中提到的关于“setX”问题的内容实际上位于CodeName一侧(SwipeableContainer.java的动画方法),这是我最初的想法,但后来你提到你编辑了它。是否可能在您的代码中触发重新验证/重新绘制或其他方法?我已经在Android studio中的codenameone源代码中对其进行了编辑(调试时)。我的代码中没有重新验证或重新绘制。我认为一个好主意可能是重构SwipeableContainer类来更改边距,而不是X位置,这并不总是有效的,我倾向于同意,但我没有编写组件,所以我不确定其含义。请提交一个问题并参考这个问题,我会问。