Автоматическая высота поля ввода - PullRequest
2 голосов
/ 14 ноября 2009

В приложении «Моя обувь» три элемента сложены друг на друга (конечно же, со стопкой) в следующем порядке:

  • Баннер
  • Поле для редактирования
  • Две кнопки в потоке

Я хочу, чтобы баннер оставался в размере по умолчанию (48 пикселей), а также кнопки (я думаю, это может зависеть от платформы?), И чтобы поле редактирования занимало оставшуюся область на экране и автоматически изменить размер окна? Это возможно?

Если нет, было бы возможно, если бы кнопки были перемещены над полем редактирования? (Таким образом, поле ввода будет заполнено до конца окна)

1 Ответ

3 голосов
/ 18 ноября 2009

Я не могу взять на себя всю ответственность за это, так как он вдохновлен этой веткой электронной почты и кодом, связанным в этой ветке, но ниже работает; хотя он грубый (он опрашивает окно каждую секунду, чтобы настроить размеры).

Shoes.app do
    @header = stack :height => 48 do
        background red
    end
    stack do 
        @edit = edit_box
    end
    @footer = flow do
        style(:attach => Window, :top => app.height-100, :height => 25)
        button "Button 1"
        button "Button 2"
    end
    @height = 0
    every(1) do
        @windowheight = slot.height
        # Note app.height works on Linux and Windows, but not on OSX
        # See http://article.gmane.org/gmane.comp.lib.shoes/3493/match=app+height
        # So use slot.height instead. 
        unless @windowheight == @height
            @edit.style(:height => @windowheight-@header.height-@footer.height)
            @footer.style(:top => @windowheight-25)
        end
    end
end

Насколько я знаю, если вы переместите кнопки над окном редактирования, вам все равно придется делать то же самое, чтобы динамически изменять его размер. Вы можете задать новый список рассылки для Shoes: shoes@librelist.com

...