LibGDX中为TextButton添加背景色的更简便低成本实现方案
核心逻辑
全局复用一份1x1纯白色纹理,通过修改Drawable着色值实现任意颜色的纯色背景,完全避免频繁创建、销毁纹理带来的性能开销。
实现步骤
- 全局仅初始化一次公共1x1白色纹理,放在应用资源初始化逻辑中执行:
// 全局复用资源,仅初始化1次 val whitePixmap = Pixmap(1, 1, Pixmap.Format.RGBA8888) whitePixmap.setColor(1f, 1f, 1f, 1f) whitePixmap.fill() val globalWhiteTexture = Texture(whitePixmap) whitePixmap.dispose() val globalWhiteTexRegion = TextureRegion(globalWhiteTexture)
- 需要修改TextButton背景色时,直接使用公共纹理生成Drawable并设置着色即可,无需重建任何纹理资源:
val bgDrawable = TextureRegionDrawable(globalWhiteTexRegion) // 直接传入你需要的r/g/b/a值即可生成对应颜色背景 bgDrawable.setColor(r, g, b, a) // 赋值给TextButton样式 val buttonStyle = textButton.getStyle.asInstanceOf[TextButton.TextButtonStyle] buttonStyle.up = bgDrawable // 如有需要可同步设置按下、禁用状态的背景色:buttonStyle.down / buttonStyle.disabled textButton.setStyle(buttonStyle)
注意事项
全局创建的
globalWhiteTexture需要在应用退出、资源释放阶段主动调用globalWhiteTexture.dispose()回收,避免显存泄漏。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

