目前,项目已经成型 不得不说 模块类型的开发写起来真的挺爽的
但是 有爽的 自然有不爽的 有些地方还是那个样子 难处理 相比于android原声的还是稍微简单一些 官方目前也在积极的更新
写了一段收缩 展开的 逻辑代码
先上图
我的项目需求是三个以上展开 这样 我们先来分析一下
首先 这是个详情界面
根布局是滚动布局 do_scrollview 这点勿用质疑
这个卸货地址 要用包裹布局来写 使用 do_linerlayout 高度 -1
将这个do_linerlayout 视为一个容器 我们向其中动态添加子布局
do_studio 这里比较恶心 设置为-1 之后 如果下面还有布局 会把它盖住 很难受 所以最开始写的时候稍微给一些高度 等到最后调整的时候在改为-1 以便于观测修改
“点击修改”也是一个子view 动态修改添加的
剩下的直接扔代码
/**
* dl_end_address_list
*
* @returns 终点地址
*/
function setenddetail(end_data) {
if (end_data.length > 3) {
for (var i = 0; i < 3; i++) {
setitem(i, end_data);
// 超出三个 显示按钮
if (i == 2) {
list_container.add("btn",
"source://view/goodsource/detail/btn.ui", "endaddress"
+ (i));
ui("btn.div_down_up").source = "source://image/down.png";
ui("btn.dbtn_down_up").text = "向下展开";
common
.clickEvent(
ui("btn.dbtn_down_up"),
function() {
if (is_down) {
for (var j = 3; j < end_data.length; j++) {
setitem(j, end_data);
}
is_down = false
ui("btn.dbtn_down_up").text = "向上收起"
ui("btn.div_down_up").source = "source://image/up.png";
} else {
for (var j = 3; j < end_data.length; j++) {
ui("endaddress" + j).remove();
}
is_down = true
ui("btn.dbtn_down_up").text = "向下展开";
ui("btn.div_down_up").source = "source://image/down.png";
}
});
}
}
} else {
for (var i = 0; i < end_data.length; i++) {
setitem(i, end_data);
}
}
}
function setitem(i, end_data) {
if (i == 0) {
// 添加第一个
list_container.add("endaddress" + i,
"source://view/goodsource/detail/endaddress.ui");
ui("endaddress" + i + ".div_endaddress_index").source = "source://image/"
+ (i + 1) + ".png";
ui("endaddress" + i + ".dl_endaddress").text = end_data[i].eadrs_detail_address;
} else {
// 添加剩余
list_container.add("endaddress" + i,
"source://view/goodsource/detail/endaddress.ui", "endaddress"
+ (i - 1));
ui("endaddress" + i + ".div_endaddress_index").source = "source://image/"
+ (i + 1) + ".png";
ui("endaddress" + i + ".dl_endaddress").text = end_data[i].eadrs_detail_address;
}
}