Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式计算textview的宽度_Android_Android Layout_Xamarin_Textview - Fatal编程技术网

Android 以编程方式计算textview的宽度

Android 以编程方式计算textview的宽度,android,android-layout,xamarin,textview,Android,Android Layout,Xamarin,Textview,我想以编程方式创建textview,如果它适合设备屏幕,则水平显示,否则显示在下一行 我有屏幕的可用宽度和一些文本。基于该文本,我想创建textview并显示它。我也有额外的文本,我想显示在第一行,如果它适合那里。否则,它应该放在下一行。唯一的问题是,我无法根据文本获取textview的宽度。我不能使用wrap_内容,因为它不会给出其宽度值。在包含textview的活动中,实现此界面 global::Android.Views.ViewTreeObserver.IOnGlobalLayoutLi

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


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

在包含textview的活动中,实现此界面

global::Android.Views.ViewTreeObserver.IOnGlobalLayoutListener
这将使您实现OnGlobalLayout方法

您还需要添加

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

如果调用
textView.Height
textView.Width
,则在创建视图后,它将返回textView的真实宽度和高度,而不是wrap content-1值。

如果我将wrap_内容用作布局参数,请查看我告诉您的情况。它不允许我获得精确的数字宽度来应用逻辑检查宽度是否小于可用的屏幕宽度。使用本机Paint.measureText()可以获得渲染大小(或接近它),然后使用该宽度,决定是否将文本附加到第一行,详细回答如下@
public void OnGlobalLayout()
    {
        if (textView != null)
        {
            int height = textView .Height;
        }
    }