Как сделать inline-кнопку Telegram Bot API с новой строки в Java?

150
17 сентября 2019, 20:00

Как сделать inline-кнопку Telegram API с новой строки в Java?

Пишу на JDK11.

Заранее спасибо!

public static SendMessage sendInlineKeyBoardMessage(long chatId) {
    InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); //Создаем объект разметки клавиатуры
    InlineKeyboardButton inlineKeyboardButton1 = new InlineKeyboardButton(); //Создаем кнопку
    InlineKeyboardButton inlineKeyboardButton2 = new InlineKeyboardButton(); //Создаем кнопку
    InlineKeyboardButton inlineKeyboardButton3 = new InlineKeyboardButton(); //Создаем кнопку
    InlineKeyboardButton inlineKeyboardButton4 = new InlineKeyboardButton(); //Создаем кнопку
    InlineKeyboardButton inlineKeyboardButton5 = new InlineKeyboardButton(); //Создаем кнопку
    inlineKeyboardButton1.setText("Понедельник"); //Текст самой кнопки
    inlineKeyboardButton1.setCallbackData("Ответ"); //Отклик на нажатие кнопки
    inlineKeyboardButton2.setText("Вторник"); //Текст самой кнопки
    inlineKeyboardButton2.setCallbackData("Ответ"); //Отклик на нажатие кнопки
    inlineKeyboardButton3.setText("Среда"); //Текст самой кнопки
    inlineKeyboardButton3.setCallbackData("Ответ"); //Отклик на нажатие кнопки
    inlineKeyboardButton4.setText("Четверг"); //Текст самой кнопки
    inlineKeyboardButton4.setCallbackData("Ответ"); //Отклик на нажатие кнопки
    inlineKeyboardButton5.setText("Пятница"); //Текст самой кнопки
    inlineKeyboardButton5.setCallbackData("Ответ"); //Отклик на нажатие кнопки
    List<InlineKeyboardButton> keyboardButtonsRow1 = new ArrayList<>();
    List<InlineKeyboardButton> keyboardButtonsRow2 = new ArrayList<>();
    List<InlineKeyboardButton> keyboardButtonsRow3 = new ArrayList<>();
    List<InlineKeyboardButton> keyboardButtonsRow4 = new ArrayList<>();
    List<InlineKeyboardButton> keyboardButtonsRow5 = new ArrayList<>();
    keyboardButtonsRow1.add(inlineKeyboardButton1);
    keyboardButtonsRow1.add(inlineKeyboardButton2);
    keyboardButtonsRow1.add(inlineKeyboardButton3);
    keyboardButtonsRow1.add(inlineKeyboardButton4);
    keyboardButtonsRow1.add(inlineKeyboardButton5);
    List<List<InlineKeyboardButton>> rowList = new ArrayList<>(); //Создаём ряд
    rowList.add(keyboardButtonsRow1);
    rowList.add(keyboardButtonsRow2);
    rowList.add(keyboardButtonsRow3);
    rowList.add(keyboardButtonsRow4);
    rowList.add(keyboardButtonsRow5);
    inlineKeyboardMarkup.setKeyboard(rowList);
    return new SendMessage().setChatId(chatId).setText("Выбери день недели:").setReplyMarkup(inlineKeyboardMarkup);
} // Кнопки
Answer 1

Кнопки - это массив массивов, где каждый вложенный массив является новым рядом (строкой) кнопок. Судя по представленному коду, все кнопки добавляются у вас в один ряд - keyboardButtonsRow1:

keyboardButtonsRow1.add(inlineKeyboardButton1);
keyboardButtonsRow1.add(inlineKeyboardButton2);
keyboardButtonsRow1.add(inlineKeyboardButton3);
keyboardButtonsRow1.add(inlineKeyboardButton4);
keyboardButtonsRow1.add(inlineKeyboardButton5);

Соответственно, следующий код будет отображать по одной кнопке на строку:

keyboardButtonsRow1.add(inlineKeyboardButton1);
keyboardButtonsRow2.add(inlineKeyboardButton2);
keyboardButtonsRow3.add(inlineKeyboardButton3);
keyboardButtonsRow4.add(inlineKeyboardButton4);
keyboardButtonsRow5.add(inlineKeyboardButton5);
READ ALSO
Как сделать Json отображение через Simple JSON

Как сделать Json отображение через Simple JSON

Что сделать, чтобы показывал строку в этом коде?

133
Вывод данных на страницу

Вывод данных на страницу

При выводе данных в консоль все отображается без пробела, а вот если на страницу появляется небольшое расстояние и затем если в окне пытаться...

158
Отключить растяжку flex при переносе

Отключить растяжку flex при переносе

При указании значения flex: 150px, элементы в контейнере растягиваются так, чтобы заполнить всю ширину родителяНо нужно, чтобы при переносе этих...

123