Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Resizing the TextLabel according to it's contents?

I have a chat GUI that, when someone chat's, a TextLabel is created in which will contain what the player said. Though, i would like that when each line that the text creates, it resizes the Y of the text box accordingly, so it doesn't have a static Y size and when the player chats a short message, there isn't a giant gap between each message.

Script:

wait(2)

chatBoxGui = script.Parent.ExampleGui
chatEvent = game.Workspace:WaitForChild("OnChatted")
receiveChat = game.Workspace:WaitForChild("SendChatToEveryone")
amountOfChats = 0
canChat = true

function CreateNewChat(args)
	local newChat = chatBoxGui:clone()
	newChat.Parent = script.Parent.Parent.Chats
	newChat.Position = UDim2.new(0,0,0,amountOfChats*50)
	newChat.Text = args[1]..": "..args[2]
	newChat.Visible = true
	amountOfChats = amountOfChats+1
end

receiveChat.OnClientEvent:connect(function (args)
	CreateNewChat(args)
end)

script.Parent.Parent.TextButton.MouseButton1Click:connect(function()
	if not canChat then return end
	canChat = false
	chatEvent:FireServer({game.Players.LocalPlayer.Name,script.Parent.Text})
	wait(2)
	canChat = true
end)

1 answer

✓ Accepted answer

You can enable the TextWrapped property of TextLabel (so the text will align itself accordingly to it's text bounds), then use the TextBounds property to get the height of the message. You can index TextBounds for the axis you want the length of (either X or Y), in this case, you'd use Y. After that, simply set the size of the TextLabel with TextBounds.Y as your Y offset. Here's an example:

newChat.Text = "random multi-line\ntext"
newChat.Size = UDim2.new(1,0,0,chatMessage.TextBounds.Y)

1 comment

0

Thanks!

This discussion is preserved as it was. New answers, comments, and votes are closed.