UI5 StandardListItem DetailAndActive 改变Icon
UI5 StandardListItem DetailAndActive change Icon
我想更改
的标准 "pen" 图标
StandardListItem of type DetailAndActive
。有办法吗?
我的 XML 到目前为止:
<List
id="master1List"
items="{/path}"
mode="{device>/listMode}"
select="onSelect"
itemPress="showDetail"
growing="true"
growingScrollToLoad="true">
<items>
<StandardListItem
type="DetailAndActive"
activeIcon="sap-icon://message-information"
id="master1ListItem"
press="onSelect"
title="{title}">
</StandardListItem>
</items>
</List>
据我所知只有属性 "icon"(我不需要)和 "activeIcon"(我设置但也没有显示在 itemPress/tab 上)。我想我可以通过 css 更改它,但它是在数据属性(图标字体,而不是我可以覆盖的 uri)中设置的,然后应用:
.sapUiIcon:before {
content: attr(data-sap-ui-icon-content);
...
谢谢..
[编辑:]
我接受以下答案是正确的,因为它有效。但是正如您在我的评论中看到的那样,我想通过使用 here 中描述的聚合元数据来接受控件:
metadata: {
aggregations: {
"Button" : {type : "sap.m.Button", multiple : false, visibility: "public"}
},
defaultAggregation: "Button"
},
到目前为止,我可以在我的 XML 视图中向 ListItem 添加一个 Button 控件,但它没有呈现 :-) 我还想念这里的任何想法吗?
图标在控件中进行了硬编码。我发现我可以扩展 StandardListItem 以获得您想要的结果。
sap.m.StandardListItem.extend('my.StandardListItem', {
renderer: {},
constructor: function(sId, mProperties) {
sap.m.StandardListItem.prototype.constructor.apply(this, arguments);
var sURI = sap.ui.core.IconPool.getIconURI("action");
this._detailIcon =
new sap.ui.core.Icon({
src:sURI})
.setParent(this, null, true)
.addStyleClass("sapMLIBIconDet");
}
});
http://jsbin.com/tuqufe/1/edit?js,output
中有一个工作示例
坏消息是在下一个版本 (1.28.?) 中,完成此操作的方式将发生重大变化,因此您将需要重做扩展控件。
[编辑:]抱歉我忘记了这个。我刚刚使用 OpenUI5 V1.30 beta 库构建了一个快速示例。现在关键代码看起来像这样...
sap.m.StandardListItem.extend('my.StandardListItem', {
metadata: {
properties: {
"detailIcon": "string"
}
},
renderer: {},
setDetailIcon: function(icon) {
this.DetailIconURI = sap.ui.core.IconPool.getIconURI(icon);
}
});
处有样本
我想更改
的标准 "pen" 图标StandardListItem of type DetailAndActive
。有办法吗?
我的 XML 到目前为止:
<List
id="master1List"
items="{/path}"
mode="{device>/listMode}"
select="onSelect"
itemPress="showDetail"
growing="true"
growingScrollToLoad="true">
<items>
<StandardListItem
type="DetailAndActive"
activeIcon="sap-icon://message-information"
id="master1ListItem"
press="onSelect"
title="{title}">
</StandardListItem>
</items>
</List>
据我所知只有属性 "icon"(我不需要)和 "activeIcon"(我设置但也没有显示在 itemPress/tab 上)。我想我可以通过 css 更改它,但它是在数据属性(图标字体,而不是我可以覆盖的 uri)中设置的,然后应用:
.sapUiIcon:before {
content: attr(data-sap-ui-icon-content);
...
谢谢..
[编辑:] 我接受以下答案是正确的,因为它有效。但是正如您在我的评论中看到的那样,我想通过使用 here 中描述的聚合元数据来接受控件:
metadata: {
aggregations: {
"Button" : {type : "sap.m.Button", multiple : false, visibility: "public"}
},
defaultAggregation: "Button"
},
到目前为止,我可以在我的 XML 视图中向 ListItem 添加一个 Button 控件,但它没有呈现 :-) 我还想念这里的任何想法吗?
图标在控件中进行了硬编码。我发现我可以扩展 StandardListItem 以获得您想要的结果。
sap.m.StandardListItem.extend('my.StandardListItem', {
renderer: {},
constructor: function(sId, mProperties) {
sap.m.StandardListItem.prototype.constructor.apply(this, arguments);
var sURI = sap.ui.core.IconPool.getIconURI("action");
this._detailIcon =
new sap.ui.core.Icon({
src:sURI})
.setParent(this, null, true)
.addStyleClass("sapMLIBIconDet");
}
});
http://jsbin.com/tuqufe/1/edit?js,output
中有一个工作示例坏消息是在下一个版本 (1.28.?) 中,完成此操作的方式将发生重大变化,因此您将需要重做扩展控件。
[编辑:]抱歉我忘记了这个。我刚刚使用 OpenUI5 V1.30 beta 库构建了一个快速示例。现在关键代码看起来像这样...
sap.m.StandardListItem.extend('my.StandardListItem', {
metadata: {
properties: {
"detailIcon": "string"
}
},
renderer: {},
setDetailIcon: function(icon) {
this.DetailIconURI = sap.ui.core.IconPool.getIconURI(icon);
}
});
处有样本