Поверните кнопку (или текст внутри) в коде - PullRequest
5 голосов
/ 21 декабря 2011

Мне нужно повернуть кнопку (или текст внутри, это то же самое) на произвольную степень путем кодирования. Есть ли button.setRotate (x) на уровне API ниже 11 ??

1 Ответ

4 голосов
/ 21 декабря 2011

Хорошо, посмотрел, и ответ: это сложно.

Вы можете вращать кнопку, используя старую среду анимации, например, вот так:

Button button = (Button) findViewById(R.id.button);

// rotation from 0 to 90 degrees here
RotateAnimation a = new RotateAnimation(0, 90);
a.setFillAfter(true);
a.setDuration(0);
button.startAnimation(a);

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

Поскольку это не очень хорошее решение, лучше всего написать собственный вид, расширяющий класс Button.и поверните палитру кнопок в onDraw().Вы также должны переопределить onMeasure() в этом случае.См. Пользовательские компоненты , чтобы узнать, что делать.

Кроме того, вы можете попытаться перехватить события щелчка от родительского макета кнопок и вызвать соответствующее событие, когда щелчок произошел в пределах текущих кнопок.координаты.Хотя это несколько "хакерски".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...