Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
Java 获取布局为“U宽度=”的文本视图的可用宽度;包装“U内容”;_Java_Android_Textview_Width - Fatal编程技术网

Java 获取布局为“U宽度=”的文本视图的可用宽度;包装“U内容”;

Java 获取布局为“U宽度=”的文本视图的可用宽度;包装“U内容”;,java,android,textview,width,Java,Android,Textview,Width,我有一个复杂的布局,它的文本视图带有layout\u width=“wrap\u content”。我想获得此TextView可以填充的最大宽度 有没有一种通用的方法?或者我应该检查所有的家长,计算他们的利润,填充物,等等?Android是如何做到的?你可以得到它的父对象,然后像这样计算它的宽度。此宽度将是TextView可以采用的最大宽度,前提是父级没有填充 View parent = (View) textView.getParent(); int width = parent.getWid

我有一个复杂的布局,它的文本视图带有
layout\u width=“wrap\u content”
。我想获得此TextView可以填充的最大宽度


有没有一种通用的方法?或者我应该检查所有的家长,计算他们的利润,填充物,等等?Android是如何做到的?

你可以得到它的父对象,然后像这样计算它的宽度。此宽度将是
TextView
可以采用的最大宽度,前提是父级没有填充

View parent = (View) textView.getParent();
int width = parent.getWidth();
如果父项有一些填充,则需要单独计算并从该宽度中减去

int paddingE = parent.getPaddingEnd();
int paddingS = parent.getPaddingStart();
int totalWidth = width - (paddingE + paddingS);

你可以得到它的父对象,然后像这样计算它的宽度。此宽度将是
TextView
可以采用的最大宽度,前提是父级没有填充

View parent = (View) textView.getParent();
int width = parent.getWidth();
如果父项有一些填充,则需要单独计算并从该宽度中减去

int paddingE = parent.getPaddingEnd();
int paddingS = parent.getPaddingStart();
int totalWidth = width - (paddingE + paddingS);

XY问题?为什么需要最大可能的宽度?那么android:maxWidth呢?我需要最大可能的宽度来手动计算文本是否适合一行,并根据此更改此文本。我不使用maxWidth。最好是计算文本大小运行时并进行调整,直到合适为止。如果我想根据TextView的onMeasure()中的最大可用宽度更改文本值,则对宽度和高度的约束将通过MeasureSpecs从父级传递。特别是,它们可以是未指定的,最多也可以是确切的。在最后两种情况下,你有你的最大宽度。在第一个例子中,我认为您无法计算最大宽度,但是您可以查看TextView的代码,看看它在这种情况下的作用。XY问题?为什么需要最大可能的宽度?那么android:maxWidth呢?我需要最大可能的宽度来手动计算文本是否适合一行,并根据此更改此文本。我不使用maxWidth。最好是计算文本大小运行时并进行调整,直到合适为止。如果我想根据TextView的onMeasure()中的最大可用宽度更改文本值,则对宽度和高度的约束将通过MeasureSpecs从父级传递。特别是,它们可以是未指定的,最多也可以是确切的。在最后两种情况下,你有你的最大宽度。首先,我不认为您可以计算最大宽度,但您可以查看TextView的代码,看看它在这种情况下的作用。对于具有
layout\u width=“wrap\u content”
layout\u width=“match\u parent”
的家长来说是否正确?我需要更普遍的方式。你说的更普遍的方式是什么意思?这将为您提供
textView
在其父级中可以接受的最大宽度,而不考虑父级的宽度参数。好的,我试着解释一下。父线性布局具有
layout\u width=“wrap\u content”
,因此Parent.getWidth()返回零(如果未渲染)或内部子级的宽度,但不返回最大可用空间。对于具有
layout\u width=“wrap\u content”
layout\u width=“match\u Parent”
的父级是否正确?我需要更普遍的方式。你说的更普遍的方式是什么意思?这将为您提供
textView
在其父级中可以接受的最大宽度,而不考虑父级的宽度参数。好的,我试着解释一下。父LinearLayout具有
布局\u width=“wrap\u content”
,因此Parent.getWidth()返回零(如果未渲染),或内部子级的宽度,但不返回最大可用空间。