1
  • 应用类型:手机
  • 钛 SDK:3.1.0.GA
  • 平台和版本:iOS 6.1
  • 设备:iOS模拟器
  • 主机操作系统:OSX 10.8.3
  • 钛工作室:3.1.0.201304151600

我想有条件地显示/隐藏 TableViewRow 中的文本字段。为了做到这一点,我需要扩大行的高度。但是,以下代码不起作用。TableViewRow 实际上是一个 Alloy 控制器。在我意识到它无法动画之前,我首先尝试对其进行动画处理。现在我只是想改变高度,这甚至不起作用。我尝试使用 setHeight 方法以及直接设置 height 属性无济于事。有任何想法吗?

var notesVisible = false;

function notes_click() {

    if(notesVisible == false) {
        Ti.API.info('expanding');
        $.row.height = 200;
        // $.notes_container.setHeight(124);
        notesVisible = true;
    } else {
        Ti.API.info('contracting');
        $.row.height = 75;
        $.notes_container.setHeight(0);
        notesVisible = false;
    }

};
4

2 回答 2

2

有两种很好的方法可以做到这一点,都应该从点击事件监听器中完成。

方法1)一种方法是直接改变行的“高度”变量方法2)第二种是新建一行,用新行替换当前行

方法 1 更简单,但我发现它会根据您使用的 SDK 版本而出现故障,但使用 3.1.0 它应该可以工作。这两种方法都应该从“click”事件监听器中调用,因为它更容易告诉 Titanium 根据点击操作哪一行

所以这是一个例子

currentTableview.addEventListener('click',function(e)
{
  // DO whatever your row is supposed to do when clicked

  // Now lets change the height of the row to a new height, 200 in this example
  e.row.height = 200
}

使用方法二,它涉及创建一个新行,然后用此调用替换当前行

currentTableview.updateRow(e.index,newlyCreatedUpdatedRow);
于 2013-06-18T14:58:40.473 回答
0

我知道这是某人提出的一个老问题,但提供的解决方案将不起作用,我认为最好的解决方案是创建一个递归函数并改变你的行的高度,并且需要在该行内使用视图的可见性会帮助某人:)

于 2016-04-11T08:01:46.763 回答