2017-08-24 25 views
1

我有一个复杂的布局,拥有的TextView与layout_width="wrap_content"。我想获得这个TextView可以填充的最大宽度。获取可用宽度的TextView与layout_width =“WRAP_CONTENT”

有没有一种通用的方法来做到这一点?或者我应该检查所有父母并计算他们的利润率,垫子等? Android如何做到这一点?

+0

XY问题?为什么你需要最大可能的宽度?如何android:maxWidth? –

+0

我需要最大可能的宽度来手动计算文本是否符合一行,并根据此更改此文本。我不使用maxWidth。 – Dem0n13

+0

它可能更好地计算文本大小运行和调整,直到它符合 –

回答

0

你可以得到它的父母并计算出它的宽度。这个宽度将是TextView可以提供的最大宽度,前提是父项没有填充。

View parent = (View) textView.getParent(); 
int width = parent.getWidth(); 

如果父母有一些填充,你需要分别计算它并从这个宽度中减去。

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

“layout_width =”wrap_content“'和'layout_width =”match_parent“'的父母是否正确?我需要更普遍的方式。 – Dem0n13

+0

*更普遍的方式*是什么意思?这**将给你''textView'可以在其父项中获得的最大宽度,而不考虑父项的宽度参数。 –

+0

好的,我试着解释一下。父LinearLayout具有'layout_width =“wrap_content”',所以parent.getWidth()返回零,如果它没有被渲染,或者内层孩子的宽度,但不是最大可用空间。 – Dem0n13

相关问题