我的应用程序中有两个表单,form1将一个长字符串(超过300个字符)或短字符串(少于50个字符)发送到form2上的标签,只需单击一个按钮,我使用的是标签,因为我找不到具有透明背景的备忘录组件,而Canvas的东西需要与标签属性相比较长的代码。
GridView g3 = (GridView) findViewById(R.id.grid_content);
String[] content = {"cont","cont" ,"cont","cont", "cont", "1"
, "cont","cont","cont","cont","cont", "2"
, "cont","cont","cont","cont","cont", "3"
, "cont","cont","cont","cont","cont", "4"
, "cont","cont","cont","cont","cont", "5"
};
ArrayAdapter<String> adp_content = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, content);
g3.setAdapter(adp_content);
我的想法是使用OptimalFill调整文本的高度,但是当我向标签发送一个长字符串时,字体大小完全错误,有时标签填充正确(当我在短片后重复一个长字符串时)例如字符串)。
使用:
Some label properties
Align == alClient
Alignment = taCenter
Layout = tlCenter
WordWrap = True
AutoSize = True
OptimalFill = True
我对字体大小进行了一些奇怪的更改,如果我第一次发送带有100个字符的字符串,我会得到一个像18这样的字体,如果我发送一个字符串为20,我会得到一个像30这样的字体如果我发送带有100个字符的相同字符串,我得到一个22(数字只是一个例子,而不是真实/正确的),甚至不是它们应该是什么btw
如果我更改了标题,文本高度会变坏(仍然是我使用的第一个字符串的字体大小),它只会在我发送一个小字符串时发生变化,事情就会变得很奇怪。
以下示例将类似于:
showMessage(IntToStr(label.Font.Size));
已经尝试过:
string with 100 chars returns a font size of 20
string with 70 chars returns a font size of 20 //should be arround 25 or so
string with 10 chars returns a font size of 40
string with 100 chars returns a font size of 22
我在点击发送字符串之前和之前尝试过&#39;
// to 'reset' the font size then put the string on the caption and later the real string
Caption: = '';
Caption: = # 0;
Caption: = ' ';
Caption: = '-';
Label.Update; // to update the 'math'
Label.Refresh; // to update the 'math'
Label.Repaint; //one by one and all togheter
Label.AdjustSize
Application.ProcessMessages
Form2.Update
Label.UpdateBaseBound
Labe.AdjustFontForOptimalFill;
还尝试启用和禁用标签以重置&#39;一切。
没有什么工作正常,事物有一个奇怪的值(字体大小),字体大小取决于序列的长度。
如何使其正常工作并在每次图例更改时创建正确的源计算?
使用最新的Lazarus(QT)使用Gnome 3.22.3构建Linux X64(不确定这是否相关)