Android: масштабирование кнопки с фоновым изображением - PullRequest
4 голосов
/ 14 мая 2010

Возможно, я просто глупец, но мои поиски в Google не работают.

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

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

Для кнопки с изображением есть свойство «Настроить границы вида», которое делает именно это, но я не могу поместить текст на кнопку с изображением. Есть ли что-то эквивалентное для обычной кнопки?

или я ошибаюсь?

Я также попытался установить ширину кнопки в коде, но я не могу определить новую высоту (button.getHeight () возвращает 0)

1 Ответ

4 голосов
/ 15 мая 2010

хорошо, я нашел один способ сделать это ... Я изменил патч-9, чтобы его расширяемая область была максимальной на обеих осях.

затем использовал DisplayMetrics следующим образом:

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        buttonView.setGravity(Gravity.CENTER);

        int buttonSize=(int) Math.floor(metrics.density*1.6*fontSize);
        buttonView.setWidth(buttonSize);
        buttonView.setHeight(buttonSize);

где fontSize - размер шрифта в DIP, который я помещаю на каждую кнопку. В этом случае, поскольку у меня есть только одна буква на каждой кнопке, мне не нужно беспокоиться о длине текста, но, очевидно, можно настроить это, чтобы справиться и с этой ситуацией.

...