本节讲了TextInput、ScollView、NativeViewHost、GraphicsView和WebView这些UI组件
官网原文:https://www.fusetools.com/learn/fuse#textinput
文本输入框 TextInput
Fuse提供一个TextInput
控制用来输入文本:
var valueChanged = function (args) {
console.log(args.value);
}
module.exports = {
valueChanged: valueChanged
};
数据绑定也可以是双向的,如下所示:
var Observable = require("FuseJS/Observable");
var name = Observable("");
var greeting = name.map(function (name) {
if (name == "") {
return "Type your name above";
} else {
return "Hello there, " + name + "!";
}
});
var clearName = function () {
name.value = "";
}
module.exports = {
name: name,
greeting: greeting,
clearName: clearName
};
Name:
密码输入框:
数字输入框:
有效的InputHint
属性值为Default
、Email
、Number
、Phone
和Url
。InputHint
有时会根据设定改变不同输入法,有时并不强制什么,主要看App运行在哪个平台上。比如,在桌面系统,不管该属性设为何值,都是一样的键盘输入。
TextInput
的IsMultiline
属性缺省为true
, 这样输入的文字会自动换行。
有时,你还可以关闭文本输入,就是不可编辑:
一般来说当进入文本输入框时,手持设备会显示屏幕软键盘,Fuse有许多机制去响应该事件,其中之一就是WhileKeyboardVisible
:
如上例所示,WhileKeyboardVisible
可以设定在任一元素内,当激活文本输入框,触发键盘弹出事件,该元素会做任何你安排的动作。
只读的RenderValue
属性包含的是实际绘制的字符串。举例来说,当IsPassword
设为true
时,RenderValue
包含的就是掩饰后的密码(如:******)。
样式化文本输入框 Styling TextInput
CaretColor
用来设置插入符的颜色:
SelectionColor
用来设置选择区的颜色:
PlaceholderText
用来设置文本输入框缺省显示的文字:
占位字符还可以设置单独的颜色:
滚动视图 ScrollView
当内容大于可用显示面积时,Fuse可以设置滚动视图用于浏览内容。
需要限制滚动方向,请设置AllowedScrollDirection
:
该标记的有效值包括Horizontal
、Both
和Vertical
(缺省值)。
滚动动画 ScrollingAnimation
根据滚动视图的绝对位置,我们可以给某些元素设计一些动画,比如当向上滚动时,让一个抬头慢慢消失,如下所示:
原生主视图 NativeViewHost
有些视图只有原生组件能用,显然只能应用于Native Theme
,怎样才能在GraphicsTheme
下结合原生与定制的组件呢? 答案是NativeViewHost
, 下面是一个在NativeViewHost
里加入WebView
的例子:
注意,凡是加在NativeViewHost
中的视图,都是渲染在其它GraphicsTheme
内容之前(上)的,所以在你决定使用深度和渲染顺序时,要将此特点考虑进去。(例如:像 BringToFront
和SendToBack
这些可能会表现异常。)
不想出现此类情况的话,讲定制组件和视图加到一个原生主题中。
GraphicsView
与NativeViewHost
相反的是GraphicsView
, 它可以将Fuse视图加到一个使用原生主题的App中。
再次强调,当使用NativeViewHost
时,混合原生视图和Fuse视图会导致深度顺序的行为异常。
WebView
Fuse给安卓和iOS提供一个原生WebView
组件用于显示网络内容,由于是原生的,所以在套用GraphicsTheme
主题时,请用NativeViewHost
包住WebViwe
。
WebView
可以通过Http协议呈现网络内容,结合一些实用的触发器,比如这些:PageBeginLoading
、WhilePageLoading
和PageLoaded
,就可定制浏览体验。导航触发器GoBack
和GoForward
可以作为WebView
专用触发器Reload
和LoadUrl
的补充。 另外WebView
还能用于ProgressAnimation
。
特别值得一提是EvaluateJS
触发器, 它可以在WebView
的环境下运行任何JavaScript代码,然后返回数据到Fuse:
module.exports = {
onPageLoaded : function(res) {
console.log("WebView arrived at "+ JSON.parse(res.json).url);
}
};
var result = {
url : document.location.href
};
return result;