【问题标题】:How to increase height of textArea dynamically upto 3 line height (Just like whatsApp message box) in titanium appcelerator?如何在钛 appcelerator 中将 textArea 的高度动态增加到 3 行高(就像 whatsApp 消息框)?
【发布时间】:2018-03-10 19:32:40
【问题描述】:

我需要实现文本区域的动态高度,希望用户输入评论。我在 WhatsApp 上见过这样的 textArea 交互。 文本区域最初将是 1 行高,稍后当用户输入它应该增加的文本时。但文本区域不应增加超过 3 行高。

【问题讨论】:

    标签: javascript appcelerator jtextarea appcelerator-alloy


    【解决方案1】:

    到目前为止,我使用了一种解决方法来实现这一点。

    var _lines = textFieldValue.split(/\r\n|\r|\n/).length;
    if(_lines > 3 || textFieldValue.length > 90) {
    $.textAreaDescriptionId.height = "80dp";
    } else {
      $.textAreaDescriptionId.height = Titanium.UI.SIZE;
    }
    

    【讨论】:

      【解决方案2】:

      我会使用这样的东西:

      $.textArea.height = $.textArea.font.fontSize * 3 // plus some padding
      

      添加一个填充,否则它会太小。 fontSize * 3 是 3 行的最小值。

      编辑

      如 cmets 中所述。目前无法在 Titanium 中为 TextField 设置 maxLines。所以它不会动态工作。

      Ticket 和 PR 包含此功能:

      【讨论】:

      • 我认为他要求设置动态高度,例如该字段最初应该看起来像一个单行字段,并且随着用户继续输入,它应该自动扩展为 3 行高。如果没有 TextArea 的 maxLines 属性,不确定有什么简单的方法可以做到这一点
      • 啊,我明白了。你是对的,TextField 目前没有设置 maxLines 的选项。我会建立一个 PR!
      • 目前唯一的方法是如果我们用 width=SIZE & top/bottom=0 包裹一个 TextArea在 3 行高的固定高度视图内。它肯定会创建一个可调整大小的 TextArea,其限制是其他 UI 元素必须考虑此 TextArea 的父 View 的高度。
      • 感谢@PrashantSaini 的建议。我不想限制文本字段中的字符数。我只是想限制高度,用户应该仍然可以输入文字。
      猜你喜欢
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 2011-05-24
      相关资源
      最近更新 更多