Боковой вид с XML-Android

Есть ли способ отобразить представление, например TextView в боковом направлении, используя файл макета XML? Я знаю, что вы можете поворачивать представление, используя код в действии, но есть ли способ сделать это с помощью макета?

Ответ 1

Существует, но это новое в API 11 (Android 3.0):

<TextView
    android:id="@+id/rotated"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:rotation="270"
    android:textSize="32sp"
    android:textColor="#44CC44"
    android:text="@string/rotated" />

Я пробовал это в 2.2, 2.3.1 и 2.3.3, а " android: rotation" не был законным.

Он работал в версии 3.0 на эмуляторе, но это было странно. Я также добавил paddingTop = "90dp" к нему (чтобы убрать его от другого компонента в тестовом приложении, в котором я его попробовал), и он не только перемещался по экрану, но и справа (в стороне от текста, так как он вращается на 270 градусов). У меня нет реального устройства Honeycomb для тестирования, но похоже, что вращение и отступы/поля могут плохо сочетаться.

Существует также метод android.view.View#setRotation(double), который был добавлен в API 11, который модифицирует это свойство из кода. Кроме того, помимо вращения, есть rotationX, rotationY, pivotX, pivotY, scaleX, scaleY и переводX, переводY. Я еще не играл с кем-то из них.

Существует список всех изменений в API 11.

Но я подозреваю, что вы хотели чего-то, что не ограничивается только Honeycomb. Насколько я знаю, это не так.

Ответ 2

Дэвид прав, вращение WILL работает, но в SDK я верю что-то испорченное. Графический макет заставит текст перемещаться влево или вправо (и, возможно, выключен экран), поэтому он, НО, когда я запускаю его на своем Xoom, он работает так, как ожидалось. Поэтому попробуйте настройки на устройстве API 11, чтобы увидеть, как это влияет.

Кроме того, похоже, что он делает что-то с шириной и высотой. Единственный способ заставить его работать - сделать квадрат текста квадратным. Другими словами, если вам обычно требуется только 100dp в ширину по 25dp с высоким текстом, сделайте его 100dp x 100dp, затем поверните его и попробуйте. Кроме того, верхний/нижний становится левым/правым и т.д., Когда вы поворачиваете на 90 градусов.

Я не могу понять, что делает RotationX/Y. Кажется, я ничего не делаю для меня.