【问题标题】:Implementing safe areas with Infinite Container pull to refresh使用 Infinite Container pull to refresh 实现安全区域
【发布时间】:2020-05-05 21:07:35
【问题描述】:

如何设置拉取刷新的安全区域?我有一个带有无限容器的表格。我将 IC 设置为安全区域 ic.setSafeArea(true)。当我旋转屏幕时,安全区域受到尊重(见图 1)。如果我拉刷新安全区域不被尊重(见图2)。以下代码取自 InfiniteContainerSample,如何确保在拉取刷新后遵守安全区域?

image 1

public void showForm() {
    Form hi = new Form("InfiniteContainer", new BorderLayout());

    Style s = UIManager.getInstance().getComponentStyle("MultiLine1");
    FontImage p = FontImage.createMaterial(FontImage.MATERIAL_PORTRAIT, s);
    EncodedImage placeholder = EncodedImage.createFromImage(p.scaled(p.getWidth() * 3, p.getHeight() * 3), false);

    InfiniteContainer ic = new InfiniteContainer() {
        @Override
        public Component[] fetchComponents(int index, int amount) {
            java.util.List<Map<String, Object>> data = fetchPropertyData("Leeds");
            MultiButton[] cmps = new MultiButton[data.size()];
            for(int iter = 0 ; iter < cmps.length ; iter++) {

                Map<String, Object> currentListing = data.get(iter);
                if(currentListing == null) {
                    return null;
                }
                String thumb_url = (String)currentListing.get("thumb_url");
                String guid = (String)currentListing.get("guid");
                String summary = (String)currentListing.get("summary");
                cmps[iter] = new MultiButton(summary);
                cmps[iter].setIcon(URLImage.createToStorage(placeholder, guid, thumb_url));
            }

            return cmps;
        }
    };
    ic.setUIID("Blue");
    ic.setSafeArea(true);
    ic.addComponent(new Label("This is a test"));
    hi.add(BorderLayout.CENTER, ic);
    hi.show();
}
int pageNumber = 1;
java.util.List<Map<String, Object>> fetchPropertyData(String text) {
    try {
        ConnectionRequest r = new ConnectionRequest();
        r.setPost(false);
        r.setUrl("http://api.nestoria.co.uk/api");
        r.addArgument("pretty", "0");
        r.addArgument("action", "search_listings");
        r.addArgument("encoding", "json");
        r.addArgument("listing_type", "buy");
        r.addArgument("page", "" + pageNumber);
        pageNumber++;
        r.addArgument("country", "uk");
        r.addArgument("place_name", text);
        NetworkManager.getInstance().addToQueueAndWait(r);
        Map<String,Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(r.getResponseData()), "UTF-8"));
        Map<String, Object> response = (Map<String, Object>)result.get("response");
        return (java.util.List<Map<String, Object>>)response.get("listings");
    } catch(Exception err) {
        Log.e(err);
        return null;
    }
}

【问题讨论】:

  • 这可能是拉刷新的问题,我需要检查一下,

标签: codenameone


【解决方案1】:

感谢您报告此事。这已在github 上得到修复。它将包含在周五的下一个版本中。

【讨论】:

    猜你喜欢
    • 2014-05-11
    • 2011-06-02
    • 2021-03-17
    • 1970-01-01
    • 2013-01-14
    • 2015-08-07
    • 1970-01-01
    • 2016-04-08
    • 2018-03-15
    相关资源
    最近更新 更多