使用ScrollView做文字显示时,能实现较长的文字可以通过拖拽来查看未显示完全的内容。那么如确定ScrollView下Content的GridLayoutGroup要设置多大,才能刚好显示所有文字,不会有显示不全或空余较多空间的现象。对于不确定文字量的情况下,或需要动态更新文字的时候,就要让GridLayoutGroup根据需要动态设置来满足实际开发需求。
首先我们需要知道要设置多大的字号,即每行显示多少字,一行有多高,通过运算得出GridLayoutGroup中需要设置的CellSize值。代码如下:
Text text;
RectTransform recttrans;
private int fontNumPerLine = 20;
private int fontLineHeight = 60;
private GridLayoutGroup glg;
void ScrollViewText() {
glg = transform.GetComponentInParent<GridLayoutGroup>();
text = GetComponent<Text>();
recttrans = GetComponent<RectTransform>();
string str = text.text;
recttrans.sizeDelta = new Vector2(glg.cellSize.x, (str.Length / fontNumPerLine + 1) * fontLineHeight);
glg.gameObject.GetComponent<RectTransform>().sizeDelta=new Vector2(recttrans.sizeDelta.x, recttrans.sizeDelta.y);
glg.cellSize = new Vector2(glg.cellSize.x, recttrans.sizeDelta.y);
}
为了方便,我的代码直接挂到Content下的Text上。可以根据实际情况进行修改开发。