Я имею в виду примеры кода этого урока: https://www.codenameone.com/blog/data-loading-placeholders.html
В этих примерах используется BorderLayout
, но пример LoadingTextAnimation
не работает при использовании BoxLayout.y()
. Я подозреваю, что проблема заключается в минимальной высоте Component
, которая должна быть заменена анимированным заполнителем.
Например, следующий код не работает:
Form f = new Form("Hello", BoxLayout.y());
Label profileText = new Label();
profileText.setText("placeholder");
f.add(profileText);
LoadingTextAnimation.markComponentLoading(profileText);
f.show();
Но это отлично работает:
Form f = new Form("Hello", BoxLayout.y());
Label profileText = new Label(){
public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize();
int mm = CN.convertToPixels(1);
Log.p(dim.toString() + " -> width = " + (dim.getWidth() / mm) + " height = " + (dim.getHeight() / mm));
dim.setHeight(CN.convertToPixels(10));
Log.p(dim.toString() + " -> width = " + (dim.getWidth() / mm) + " height = " + (dim.getHeight() / mm));
return dim;
}
};
profileText.setText("placeholder");
f.add(profileText);
LoadingTextAnimation.markComponentLoading(profileText);
f.show();
Играя с dim.setHeight(CN.convertToPixels(...));
, я считаю, что минимальная высота должна быть около 10 мм. Это так? Если да, то почему? Или есть другие требования? Джавадо c ничего об этом не говорит.
Спасибо за любые объяснения.