ImageButton является расширением класса таблицы и обычно изображения ImageButton устанавливаются в качестве фона. Использование метода «добавить» для второго изображения, как и вы, может работать как-то иначе, но оно ведет себя иначе, чем установка фона, а также может быть не так, как вы хотите, если вы хотите, чтобы второе изображение также изменилось при нажатии кнопки ,
Самый простой способ добавить два изображения в один ImageButton - просто объединить два изображения в Photoshop (или их эквивалент) и использовать это единственное изображение на ImageButton.
Более продвинутый (и более гибкий) метод заключается в том, чтобы объединить два изображения программно и использовать их в качестве фона для вашего ImageButton. Это можно сделать, создав пользовательский класс, который расширяет BaseDrawable и имеет два конструктора в конструкторе. Если вы хотите, чтобы ваши изображения были сложены друг на друга, установите minHeight вашего настраиваемого класса drawable как комбинированную высоту ваших двух изображений. Затем переопределить метод рисования и нарисуйте свои два изображения друг на друга, как это:
@Override
public void draw(Batch batch, float x, float y, float width, float height){
img1.getDrawable().draw(batch, x, y, img1.getWidth(), img1.getHeight());
img2.getDrawable().draw(batch, x, y+img1.getHeight(), img2.getWidth(), img2.getHeight());
}
}
ImageButton принимает рисуем в своем конструкторе, так что вы можете передать этот объект прямо в кнопке, когда вы создаете его и как ваших изображений должны появиться в кнопке, и они будут рассматриваться как один.
Я сделал что-то подобное, чтобы создать фон для таблицы, используя несколько изображений, и этот метод отлично работает.
Ваша идея очень хорошая. Вы могли бы только немного объяснить, как создать строителя этого класса? Я сделал то, что написал, но метод draw, появляется ошибка: метод draw (Batch, float) в типе изображения не применим для аргументов (Batch, float, float, float, float): О конструкторе: Открытый класс ImagesJoin расширяет BaseDrawable; public ImagesJoin (Изображение img1, изображение img2) Создание объекта: join = new ImagesJoin (img1, img2); – user3771516
D'oh, извините за это! В моей программе я фактически использовал Drawables вместо изображений. Поэтому при использовании изображений вы должны получить выделение с изображения следующим образом: img1.getDrawable(). Draw (batch, x, y, img1.getWidth(), img1.getHeight()); – Tekkerue
Я только что отредактировал свой первоначальный ответ и добавил метод getDrawable() на изображениях. – Tekkerue