我已经实现了自定义BasicEditField
来设置提示并输入长文本。
请参阅我的代码
vfm_searchBox = new VerticalFieldManager()
{
//Main.Quicksearchinput is background image for inputtext
public void paint(Graphics g)
{
g.setColor(Color.WHITE);
g.drawBitmap(0,0,Main.Quicksearchinput.getWidth(),Main.Quicksearchinput.getHeight(),Main.Quicksearchinput,0,0);
super.paint(g);
}}
有一个HorizontalFieldManager
可以滚动文字。
hfm_searchBox = new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL) ;
输入文字有一个Basiceditfield
。
txtSearch = new BasicEditField(BasicEditField.NO_NEWLINE)
{
public void paint(Graphics g)
{
if(super.getText().length() == 0)
{
g.setColor(Color.GRAY);
g.setFont(g.getFont().derive(Font.PLAIN,18));
g.drawText("Enter Event title or subtitle", 0, 0);
super.paint(g);
}
else
{
g.setColor(Color.BLACK);
super.paint(g);
}
}};
BasicEditField
对Backgroundimage
和hint
看起来不错,但问题是,当我在textfield中没有任何输入时,它就像无限滚动一样工作。我已将Horizontalfield
宽度设置为取决于BasiceditField,但默认情况下其宽度设置为无限制。
hfm_searchBox.add(txtSearch);
vfm_searchBox.add(hfm_searchBox);
如何防止无尽的滚动?
先谢谢!!!
答案 0 :(得分:3)
HorizontalFieldManager的virtual width是什么?这指的是可滚动空间,而宽度指的是屏幕上的范围。您可以尝试扩展HorizontalFieldManager并覆盖sublayout方法,在其中调用setVirtualExtent。
答案 1 :(得分:2)
正如Tamar所说,Field的虚拟宽度是追踪的关键概念。
你可以see my solution to a very similar question here。我提供了一个完整的代码示例,可能与您尝试的内容相差不远。我使用的代码更进了一步,并动态地将滚动限制到文本当前到达的末尾。如果您不这样做,只需设置一个常量虚拟宽度,那么您可以让该字段实际向右滚动太远。通过动态调用setVirtualExtent()
,您总是可以足够滚动,但不会太多。