【问题标题】:calculate width for textview programmatically以编程方式计算 textview 的宽度
【发布时间】:2015-08-29 13:29:55
【问题描述】:

我想以编程方式创建文本视图,如果它适合设备屏幕,则水平显示,否则在下一行显示。

我有屏幕的可用宽度和一些文字。基于该文本,我想创建 textview 并显示它。我还有其他文本,如果它适合,我想在第一行显示。否则,它应该在下一行。唯一的问题是我无法根据其文本获取 textview 的宽度。我不能使用 wrap_content 因为它不会给我它的宽度值。

【问题讨论】:

  • 正如我所说,如果我使用 wrap_content 作为布局参数。它不会让我得到确切的数字宽度来应用我的逻辑来检查宽度是否小于可用的屏幕宽度。
  • 使用本机 Paint.measureText() 可以得到渲染的大小(或接近它),然后使用该宽度,决定是否将文本附加到第一行,详细答案@ stackoverflow.com/questions/7549182/…

标签: android android-layout xamarin textview


【解决方案1】:

在包含你的textview的activity中,实现这个接口;

global::Android.Views.ViewTreeObserver.IOnGlobalLayoutListener

这将使您实现 OnGlobalLayout 方法。

您还需要添加;

rootLayout = FindViewById<RelativeLayout>(Resource.Id.rootLayout);
rootLayout.ViewTreeObserver.AddOnGlobalLayoutListener(this);

此处的根布局可以是包含文本视图的根布局。

关于你实现的方法,

public void OnGlobalLayout()
    {
        if (textView != null)
        {
            int height = textView .Height;
        }
    }

如果您调用textView.HeighttextView.Width,它将在视图创建后返回您的文本视图的真实宽度和高度,而不是换行内容-1 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多