首页 文章

使用SwipeBacksupport滑动表单会将整个屏幕变为白色

提问于
浏览
1
  • 在滑动表单时,屏幕左侧部分只是白色,直到完成滑动,最后绘制“返回”形式 . 这是设计的吗?我期望“回到”形式要么逐渐显露出来,要么从左边滑入 .

  • 在iOS和Android上,正在刷卡的表格似乎也变为白色,因此整个屏幕都是白色的,直到刷卡结束 . 然而,模拟器不是这种情况,你可以看到表格,直到它完全滑出 .

重现行为的代码:

Form redForm = new Form("Red Form");
    redForm.getAllStyles().setBgColor(0xff0000);
    Button btnToBlueForm = new Button("Go to blue form");
    redForm.add(btnToBlueForm);

    Form blueForm = new Form("Blue Form"); 
    blueForm.getAllStyles().setBgColor(0x0000ff);

    LazyValue<Form> lazyRedForm = (Object... args) -> redForm;
    SwipeBackSupport.bindBack(blueForm, lazyRedForm); 

    btnToBlueForm.addActionListener((ActionListener<ActionEvent>) (ActionEvent evt) -> {
        blueForm.show();
        SwipeBackSupport.bindBack(blueForm, lazyRedForm);
    });

    redForm.show();

按红色表格中的按钮 . 现在出现蓝色表格 . 向后滑动并观察效果 .

1 回答

  • 1

    那是因为过渡中的SlideFade模式 . 如果您将其切换为幻灯片,它应该按预期的方式与背景一起工作 . 这是您的代码版本,通过将样式应用于内容窗格,您可以按预期工作:

    Form redForm = new Form("Red Form");
    redForm.getContentPane().getAllStyles().setBgColor(0xff0000);
    redForm.getContentPane().getAllStyles().setBgTransparency(255);
    
    Button btnToBlueForm = new Button("Go to blue form");
    redForm.add(btnToBlueForm);
    
    Form blueForm = new Form("Blue Form"); 
    blueForm.getContentPane().getAllStyles().setBgColor(0x0000ff);
    blueForm.getContentPane().getAllStyles().setBgTransparency(255);
    
    LazyValue<Form> lazyRedForm = (Object... args) -> redForm;
    SwipeBackSupport.bindBack(blueForm, lazyRedForm); 
    
    btnToBlueForm.addActionListener((ActionListener<ActionEvent>) (ActionEvent evt) -> {
        blueForm.show();
        SwipeBackSupport.bindBack(blueForm, lazyRedForm);
    });
    
    redForm.show();
    

    这与原始代码相反的原因是SlideFade是两个单独的过渡,一个移动/淡化 Headers ,另一个单独滑动内容窗格 . 由于内容窗格是透明的,因此背景不会被绘制,因为我们假设它是表单背景 . 通过设置内容窗格颜色/不透明度,我们可以在SlideFade“看到”的图层上获得完全相同的效果 .

相关问题