如何动态更改TableViewRow的高度?

时间:2013-06-17 11:38:39

标签: titanium titanium-mobile

  • 申请类型:手机
  • Titanium SDK:3.1.0.GA
  • 平台&版本:iOS 6.1
  • 设备:iOS模拟器
  • 主机操作系统:OSX 10.8.3
  • Titanium Studio:3.1.0.201304151600

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

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;
    }

};

1 个答案:

答案 0 :(得分:2)

有两种很好的方法可以执行此操作,两种方法都应该从click事件侦听器完成。

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

方法1更简单,但我发现它很糟糕,具体取决于您使用的SDK版本,但3.1.0应该可以使用。应该从'click'eventListener调用这两个方法,因为它更容易告诉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);