在使用GeneXus开发Android应用的过程中遇到了一个问题,使用tabs控件时发现默认高度过高,和UI设计要求的高度不一致,找了很久发现没有地方设置。后来联系了GeneXus中国厂商,得到了答复。由于GeneXus厂商研发产品时(例如Android),基本是按照Android官方的设计规范来的,而国内有时候开发一些App,未必是按照规范来的。

我们目前大部分的Android应用,仍然会使用放在底部的tabs方式(和iOS一样)。GeneXus里面的tabs控件是支持放在底部的,但是默认的高度是72(包含文本和图片),且目前没有修改的地方。那么如果通过修改源代码的方式来实现我们想要的效果呢?(例如我们的App设计的高度是48)。

后来经过沟通,明白了GeneXus工具是将其android的框架源码开放的,工具里面默认已经将源码编译过了,所以如果我们要修改框架的源码,需要修改之后再编译一次。

下面我说一下如何修改源码文件及编译,以这次我修改tab控件的高度为例。

1.修改GeneXus源文件,一般情况下,都是修改FlexibleClient目录下面的源文件的。

例如要调整tabs控件高度,需要修改TabControlDefinition.java文件。

打开GeneXus安装目录下

>\Android\Sources\FlexibleClient\src\com\artech\base\metadata\layout

找到TabControlDefinition.java文件,

查找public static final int TAB_HEIGHT_ICON_AND_TEXT = 72;

将72设置为想要的高度,比如我设置的高度是48。

2. 编译修改后的FlexibleClient

如果英语好的话,可以看一下wiki上的文章,写的还是很详细的。

How to compile Android FlexibleClient

有些童鞋英语不大好,我大致描述一下这个步骤。

1)检查环境要求:

Android SDK (这里可以参考一下Android sdk的要求)

Maven (Version 3.3 or later)

JDK (Version 8 or later)

2)添加环境变量

ANDROID_HOME=<Android_SDK>

M2_HOME=<Maven_Reporsitory>

例如我本地的路径:

ANDROID_HOME=C:\Android

M2_HOME="C:\Program Files (x86)\GeneXus\GeneXus 15\Android\MavenRepositories"

然后执行以下步骤进行编译:

  1)使用管理员打开cmd,进入到GeneXus的source目录下

cd %GENEXUS_PATH%\Android\Sources

2)执行下面的句子编译

gradlew assembleRelease uploadArchives

  3)执行下面的句子将编译的文件拷贝到目录下

xcopy build\outputs\genexusRepo ..\MavenRepositories\genexusRepository\ /e /Y

这里需要注意一下,如果是第一次执行第二步的时候,有可能是要下载一些便宜工具文件的,如果下载失败,前面的基础环境如果安装没问题的情况下那就多执行几次。

编译成功后,以后GeneXus工具就是引用我们刚刚重新编译的FlexibleClient文件了。

而针对我自己的KB,把以前已经生成的Android代码删掉,例如这个目录C:\Models\sdmo\CSharpModel\mobile,删除完成后,重新编译KB即可。

从这个角度来看,GeneXus工具并不是一个封闭的平台,一些框架源码也是公开的,理论上技术上能实现的这个平台也能实现,只是需要看一下这个平台是否已经将我们想要的封装在工具里面了。

如果有些要求很紧急,是可以通过修改源码的方式来实现的。当然,我并不建议大家都去修改源码,毕竟改多了容易出现问题,对于一些必须性的要求,还是建议反馈给厂商,让他们将所要的功能加到工具里面,这样直接在工具里使用就可以了。

如果修改GeneXus Android的一些源码文件(FlexibleClient)的更多相关文章

  1. 《UNIX网络编程(第3版)》unp.h等源码文件的编译安装

    操作系统:Mac OS X 10.11.5 1.下载书中的源代码:点击下载 2.切换到解压后的目录 unpv13e,先查看下 README,依次执行: ./configure cd lib make ...

  2. golang---命令源码文件与命令行参数

    命令源码文件是程序的运行入口,是每个可独立运行的程序必须拥有的. import "flag"  flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个se ...

  3. [C/C++] 各种C/C++编译器对UTF-8源码文件的兼容性测试(VC、GCC、BCB)

    在不同平台上开发C/C++程序时,为了避免源码文件乱码,得采用UTF-8编码来存储源码文件.但是很多编译器对UTF-8源码文件兼容性不佳,于是我做了一些测试,分析了最佳保存方案. 一.测试程序 为了测 ...

  4. Erlang千万级用户游戏框架(Openpoker)源码文件分析清单

    openpoker源码 erlang写的网游服务器源码,OpenPoker是一个大型多人扑克网游,内建支持了容错能力,负载平衡和无限制的规模大小.本文是openpoker源码文件功能的一个清单式说明: ...

  5. C++ 多源码文件简单组织

    C++ 多源码文件简单组织 基本上和C的是一样的,只不过C++的方法要在类中声明.看一个简单实例.ainimal.h  类里面对外公开的信息. 点击(此处)折叠或打开 #ifndef _ANIMAL_ ...

  6. Python源码文件中带有中文时,输出乱码

    Python源码文件中带有中文时,文件头应加注释: #!/usr/bin/env python # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统,这是一个P ...

  7. 对threading模块源码文件的解读(不全)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #对threading模块源码文件的解读(不全) import threading #类 #Thread() ...

  8. TFS二次开发-基线文件管理器(5)-源码文件的读取

      在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了.   版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...

  9. go语言的源码文件的分类及含义

    Go源码文件:名称以.go为后缀,内容以Go语言代码组织的文件 多个Go源码文件是需要用代码包组织起来的 源码文件分为三类:命令源码文件.库源码文件(go语言程序) 测试源码文件(辅助源码文件) 命令 ...

随机推荐

  1. mysql数据库使用sql命令窗口查询的数据,改成sql语句导入到mysql数据库中

    1.查询语句为select * from t_table;导出的数据格式如下: 2.将数据文本备份,然后使用NOTEPAD++打开,然后只拷贝数据到新建txt中,然后进行如下替换: 1)将“ | ”分 ...

  2. Mysql通过show processlist排查数据库执行慢

    RDS for MySQL使用的是InnoDB引擎.不同于MyISAM引擎只提供表锁,InnoDB提供不同级别的锁.但是在我们日常的操作过程中经常由于对数据库不当的SQL操作导致出现长时间的锁,造成其 ...

  3. mongoDB与sql聚合操作对应图

    SQL Terms, Functions, and Concepts MongoDB Aggregation Operators WHERE $match GROUP BY $group HAVING ...

  4. dotnet core 实践——日志组件Serilog

     前几天把基于quartz.net的部分项目代码移植到了dotnet core ,但是没增加日志功能,原因是没找到合适的组件. 今天终于找到了Serilog: https://github.com/s ...

  5. JS操作CSS随机改变网页背景

    今天有个朋友在weibo上问我可不可以用JS和CSS让页面每次刷新随机产生一张背景图,当然我的回答是可以的.具体可以这样做: 1.用JS定义一个图片数组,里面存放你想要随机展示的图片 1 2 3 4 ...

  6. 【计蒜客】是男人就过 8 题--Pony.AI 题 A. A String Game 后缀自动机+SG函数

    [题目]A. A String Game [题意]给定目标串S和n个子串Ti,Alice和Bob轮流选择一个子串操作,必须且只能在子串末尾添加一个字符使得新串也是S的子串,不能操作即输,求胜利者.|S ...

  7. Price(洛谷P4109 [HEOI2015]定价)

    题目 思路: 按照我的思路这一题应该是这样子的 剔除+判断 剔除 因为后面的0要越多越好,所以我们判断0出现的情况,当2个数之间的差大与10时,证明2个之间会存在一个0,所以这一位我们可以把它去掉,相 ...

  8. sublime格式化css代码插件:css format

    有时会从网上下载一些css压缩文件,打开后所有代码都在一行,不利于阅读,通过css format插件,能快速展开代码,方便阅读. 参考:Sublime Text 上最好用的 CSS 格式化插件 —— ...

  9. Friends and Berries URAL - 2067 (计算三点共线和计算的时候的注意点)

    题目链接:https://cn.vjudge.net/problem/URAL-2067 具体思路:判断三点共线就可以了,只有一对点能满足,如果一对就没有那就没有满足的. 在计算的时候,要注意,如果是 ...

  10. Linux 下解决安装多个node冲突的问题(重新安装node)

    一个系统中不经意安装了多个node版本,结果更新后还是原来的版本,下面思考一下解决办法: 敲黑板: 1. nodejs 用 包管理器安装一般在 /usr/local/bin 2. 查看当前目录下的no ...