CodenameOne - BrowserComponent 不可滚动
Posted
技术标签:
【中文标题】CodenameOne - BrowserComponent 不可滚动【英文标题】:CodenameOne - BrowserComponent not scrollable 【发布时间】:2021-11-18 07:36:45 【问题描述】:这个示例项目(下载了“bare-bones”项目)显示了一个不滚动的 BrowserComponent。
顺便说一句,基本项目(由他们的在线模板生成器创建)不起作用(!),因为缺少一个文件。我将该文件从我的另一个 CN1 项目(实际上来自这个问题的那个)复制到示例项目中,现在它可以编译了。
public class MyApp extends Lifecycle
@Override
public void runApp()
Form hi = new Form("Hi World", new BorderLayout());
//Form hi = new Form("Hi World", new BoxLayout.y()); alternate version
hi.setScrollable(false); //you can also comment this one
hi.setScrollableY(false);//you can also comment this one
hi.setScrollableX(false);//you can also comment this one
Button helloButton = new Button("Hello World");
hi.add(BorderLayout.NORTH,helloButton);
//hi.add(helloButton); alternate version
helloButton.addActionListener(e -> hello());
hi.getToolbar().addMaterialCommandToSideMenu("Hello Command",
FontImage.MATERIAL_CHECK, 4, e -> hello());
Container mainContainer=new Container(new BorderLayout());
BrowserComponent bc=new BrowserComponent();
bc.setScrollable(true);
bc.setScrollableY(true);
bc.setPage("<html><BODY><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P><P>TEXT</P></BODY></HTML>",""); // it's a long page so it can be scolled
//mainContainer.add(BorderLayout.CENTER,bc); alternate version
//hi.add(BorderLayout.CENTER,mainContainer); alternate version
hi.add(BorderLayout.CENTER,bc);
hi.show();
private void hello()
Dialog.show("Hello Codename One", "Welcome to Codename One", "OK", null);
我是否遗漏了一些重要的东西,让用户可以通过触摸滚动?
我编译了几个不同的版本,包括在表单或容器内居中 BC 等等(见注释行)。
我在 CN1 模拟器和真正的 android 设备(服务器构建)上对其进行了测试,它不可滚动(而是选择了文本)。我听从了他们的所有建议,因此 BC 以 BorderLayout 为中心,并且表单设置为不可滚动。
我记得我真正的应用程序在某个时候可以运行。现在我测试了我的应用程序,发现它不起作用,所以我制作了这个示例应用程序。也许我错了。
这不是初学者的问题,而是关于 BC 有问题的问题。 我知道这样的组件在许多系统上都是不稳定的,例如像 SwiftUI 这样的重要系统,但是 当然是在CN1上。
在 CN1 模拟器上滚动条总是出现,所以我可以测试它,BC 可以通过使用滚动条滚动。但是鼠标事件没有被正确处理。
在我的实际项目中,我有很多解决方法来处理 BC 内的鼠标事件,但这里的示例项目是一个非常简单的项目,只有 BC。
BC 被最近的一些更新破坏以修复其他问题的可能性不大。
那么现在的解决办法是什么?
【问题讨论】:
【参考方案1】:您将浏览器组件包装器设置为可滚动,这有效地阻止了浏览器组件内的本机滚动。只是不要调用任何 setScrollable
任何东西,滚动将适用于边框布局的情况。
【讨论】:
当然,这是默认尝试,如您所知,这是根据您之前的建议和指南进行的不同尝试。那么什么是工作代码?你能把答案放进去吗?只是一个简单的可滚动 BC,在表单中使用触摸或鼠标(滚动条不算在内)。 注意我特指上面的代码...以上是关于CodenameOne - BrowserComponent 不可滚动的主要内容,如果未能解决你的问题,请参考以下文章
CodenameOne - BrowserComponent 不可滚动
CodenameOne - 使用 android.buildToolsVersion=27 构建时,Android 应用程序无法启动