setShowEvenIfBlank方法不生效,如何实现空文本Label的正常显示?
解决Label的
setShowEvenIfBlank()不生效问题 我之前也踩过这个坑!你遇到的问题其实和setShowEvenIfBlank()的生效逻辑有关——这个方法确实能让空文本的标签显示,但前提是标签本身有可见的尺寸。
你当前的代码里,标签只设置了宽度百分比,但没有指定高度。当标签文本为空时,组件的高度会被默认压缩到0,就算开启了setShowEvenIfBlank(true),没有高度的组件自然看不到。而你加空格后,文本有了实际尺寸,组件会根据文本计算出高度,所以背景和边框就显示出来了。
修复方案
给标签设置一个最小高度或者固定高度,确保空文本时组件仍有可见的尺寸:
for(int i=0; i<max; i++) { lb=new Label(""); lb.getUnselectedStyle().setBgColor(0x00ffffff); lb.getUnselectedStyle().setBgTransparency(0x60); lb.getAllStyles().setBorder(Border.createLineBorder(1)); lb.setShowEvenIfBlank(true); // 设置最小高度,保证空标签有足够的显示空间 lb.setMinimumHeight(30); cx.add(tx1.createConstraint().widthPercentage(33),lb); }
你也可以根据需求换成setPreferredH(30)或者setHeight(30),只要确保组件在空文本状态下有明确的高度值就行。这样setShowEvenIfBlank(true)就能正常发挥作用,不用依赖空格来撑出组件尺寸了。
内容的提问来源于stack exchange,提问作者Flemming Schwicker
相关产品推荐
相关产品推荐

