运行截图
资源文件里面的这个主事本文档必须用utf8编码保存,安卓环境的资料是用utf8编码的
布局文件中添加两个控件
B4A提供的编辑框控件,没有带纵向滚动条,需要开发者自己添加。Main窗体代码如下
#Region Module Attributes
#FullScreen: False
#IncludeTitle: True
#ApplicationLabel: 带纵向滚动条的记事本
#VersionCode: 1
#VersionName:
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: True
#End Region
Sub Process_Globals
End Sub
Sub Globals
Dim txt As String
Dim StrUtil As StringUtils '定义一个字符串实用工具集变量
'下面两个控件添加在布局文件
Dim edtText As EditText '定义一个编辑框控件
Dim scvText As ScrollView '定义一个滚动控件
End Sub
Sub Activity_Create(FirstTime As Boolean)
'这个例程将用加载布局文件的形式来实现
'先创建一个名为"balMain"的布局文件
'布局文件上面放一个名为scvText的滚动控件和名为edtText的编辑框控件
'不要在设计器是中的Main版面中修改这两个控件的属性
Activity.LoadLayout("balMain")
'若不对这个编辑框控件进行初始化,竟然会造成接下来的方法scvText.Panel.AddView执行失败
'不对编辑框控件初始化而造成程序无法运行,这个问题困惑我很久了,花了很多时间才发现这个问题
edtText.Initialize("")
'让这个滚动控件在软件界面中实现全屏
scvText.Left=0
scvText.Top=0
scvText.Width=100%x
scvText.Height=100%y
'将编辑框控件直接加到滚动视图中
scvText.Panel.AddView(edtText, 0, 0 ,100%x, 100%y)
'编辑框控件的背景色
edtText.Color = Colors.RGB(250, 250, 210)
'编辑框控件的文本颜色
edtText.TextColor = Colors.Black
LoadText '调用函数填充编辑框控件的文本属性
SetText '调用函数
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub LoadText
'方法 GetText 将读取B4A代码区右侧的文件选项夹中的文件"text1.txt"的数据
'File.DirAssets其实就是指向这个例程源码所在路径的Files文件
'text1.txt 文件是一个记事本文件,里面全是文字
txt = File.GetText(File.DirAssets, "text1.txt")
' 这句代码是错误的 Dim Data As Byte[]
Dim Data() As Byte
Data = txt.GetBytes("UTF8")
'要在安卓手机上显示汉字就必须用UTF8编码
txt =BytesToString ( Data,0, Data.Length, "UTF8")
End Sub
Sub SetText
Dim ht As Float
'text1.txt 文件的内容在编辑框上显示
edtText.Text = txt
'MeasureMultilineTextHeight方法用于 计算多行文本高度
'返回MeasureMultilineTextHeight 参数中给定编辑框的文本高度
'MeasureMultilineTextHeight方法共有两个参数,第一参数是编辑框控件名,第二个参数是编辑框控件上显示的文本
ht = StrUtil.MeasureMultilineTextHeight(edtText, txt)
'设置滚动控件面板属性的高度
scvText.Panel.Height = ht
'设置编辑框控件的高度,要实现滚动控件上的编辑框右边有纵向滚动条,一定要确保编辑框和滚动控件一样的高度
edtText.Height = ht
'ScrollPosition 属性用于获得或设定滚动位置,这是一个可读写的属性
'下面的代码将滚动条滚动到最顶,即显示编辑框控件最前面的文本内容
scvText.ScrollPosition = 0
End Sub