【问题标题】:Set width of TextView in terms of characters根据字符设置 TextView 的宽度
【发布时间】:2011-09-03 23:23:34
【问题描述】:

真的在寻找answer to this

想要根据数字或字符设置 TextView 的宽度。因此,如果我希望它始终为 3 个字符宽,我可以设置它,它会根据 textSize 设置进行调整。没有这个,我必须将宽度设置为 50dip 或其他东西,这可能是正确的,也可能不是正确的,具体取决于字体大小。

【问题讨论】:

  • 有可能通过在sp 中指定您的维度来做到这一点。
  • @CommonsWare,是的,如果你能告诉我有多少 SP 等于一个字符可能有效(但请参阅下面使用 minEms 的答案,因为我认为这就是我想要的)。所以如果文本大小=30sp 并且我想要 3 个字符宽,我是否将宽度设置为 90sp?我想我可以试试。
  • 是的,minEms 可能是一个更好的答案。

标签: android width textview


【解决方案1】:

大多数字体不会将所有字符宽度设置为相同。 Courier 可能是最常用的例外,但通常看一下 i 和 A 之间的区别,例如。这让你要求做的事情有点问题。

【讨论】:

  • 对,所以我希望这个问题已经解决了。因此,根据字符设置宽度,然后在显示时找出该字段的字体特征,并根据它确定它应该有多大。所以真的问这个问题是否已经解决了,以一种非常简单的方式。听起来不像。
【解决方案2】:

尝试使用:android:maxLength="3"

这会将您的文本限制为特定数量的字符。

【讨论】:

    【解决方案3】:

    回答我自己的问题...

    赢家是:设置minEms属性(android:minEms)!!!

    所以“ems”原来是指最宽字符的大小,通常是“M”,明白吗?因此,在 EditText 或 TextView 上将 minEms 设置为整数值(例如 3)应确保其宽度至少为 3 个字符。您也可以设置 maxEms。

    所以凯尔在这个线程上的回答虽然是错误的,但让我找到了答案,所以谢谢凯尔。

    【讨论】:

    • 当然,我还在测试这是否真的有效,但目前看来是这样。
    • 另请注意,layout_width 必须是 wrap_content 才能使 minEms 和 maxEms 按预期工作,正如 this answer 指出的那样。
    【解决方案4】:

    ems,与流行的看法相反(或者至少来自这里关于 ems 的大多数线程),不是基于单个“M”的宽度。

    最初就像在排版中那样,但在包括 Android 在内的数字媒体中,它的含义被转移到所使用的字体的大小,或者换句话说,它的高度(不包括任何重音/变音符号的填充)。

    这意味着当您为 TextView 指定 ems 时,它将使用其 textSize 作为基数并将其乘以指定的 ems

    作为示例,如果您将 16sp TextView 的 ems 设置为 4,则其宽度将为 64sp 宽。您可以通过在 ConstraintLayout 中并排使用两个 TextView(includeFontPadding 设置为 false)轻松对其进行测试(以利用其 layout_constraintDimensionRatio)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 2015-05-21
      • 2015-08-27
      • 1970-01-01
      相关资源
      最近更新 更多