Мое приложение имеет форму с двумя изображениями. Первый загружается и округляется через ImageAdapter
на лету, а второй - с темы. Они применяются к Button
и положил рядом друг с другом, как показано ниже:Почему ширина моего заполнителя не сохраняется в URLImage (Codename One)
В моей форме
Заполнитель в моей форме определяется как:
int imageWidth = (int) (Display.getInstance().getDisplayWidth()/2.5);
EncodedImage placeholder = EncodedImage.createFromImage(Image.createImage(
imageWidth,
imageWidth,
ParametresGeneraux.accentColor), true);
Изображение, которое я применяю на кнопке, создается следующим образом:
reportImage = URLImage.createToStorage(placeholder,
Report.getFilename(chosenReport.getPhotoPath()),
chosenReport.getPhotoPath(),
ParametresGeneraux.RESIZE_SCALE_WITH_ROUND_MASK
);
Тогда я только потом
System.err.println("The placeholder in FORM has a width of " + placeholder.getWidth()); // 432
я получаю ширину 432 для заполнителя внутри FORM.
Однако из ImageAdapter
public final static URLImage.ImageAdapter RESIZE_SCALE_WITH_ROUND_MASK = new URLImage.ImageAdapter() {
@Override
public EncodedImage adaptImage(EncodedImage downloadedImage, EncodedImage placeholderImage) {
System.err.println("The placeholder in the ImageAdapter has a width of " + placeholderImage.getWidth());
// ...
}
});
Ширина заполнителем я получаю внутри ImageAdapter
отличается со значением 200.
Где я должен посмотреть на ошибку, так как заполнитель Ширина должна быть одинаковой в обоих методах, не так ли?
Edit 2017-02-23: Важное примечание Перед показом этой формы, вовлеченное изображение уже загружен первый раз в другой форме с другим размером. И фактически сообщение от ImageAdapter (см. System.err()
) не запускается. Я совершил облет, потому что загружено много изображений. См. Мой ответ для продолжения.
Любой намек оценил,
С уважением
Вы используете GridLayout выше? – Diamond
Нет, я не знаю. Кнопки добавляются позже (после этого вызова) через 'this.add (BorderLayout.centerCenter (BoxLayout.encloseX (reportImageButton, minimapButton))); 'с формой в Y-BoxLayout – HelloWorld
В одиночку это не изменяет' this.add (BorderLayout.centerCenter (reportImageButton)); '. Ширина по-прежнему отличается. – HelloWorld