Intereting Posts
Как насмехаться над картиной в Android Emulator Camera? Android GCM Несанкционированная ошибка 401 с PHP Как найти информацию об использовании данных в среде Android Программное создание GridLayout из библиотеки поддержки Android 4.2.2 – adb в автономном режиме, даже после обновления SDK Как создать сканер штрих-кода (Android)? Дополнительные разрешения, чтобы приложение отображалось на всех устройствах и включало дополнительные функции на некоторых устройствах? Создать новое менюInflater или getMenuInflater () из активности? Ошибка сборки тестов для Android: несколько файлов dex определяют Landroid / support / test / BuildConfig Пользовательский стиль поиска в Android с использованием изображений с девятью патчами Воспроизведение локального аудиофайла в Android-приложении Android Как изменить активность с помощью левого правого салфетки Пользовательская панель прогресса в Android? Как определить, является ли вход в EditText целым числом? NinePatchDrawable не получает отступы от куска

Android поворачивает TextView в API Level> = 8

У меня простой TextView

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:rotation="45" android:text="Simple text" /> 

Текст не будет повернут на 45 градусов на Android 2.2.2.

Я видел разные темы, но все делают анимацию. Я не хочу оживлять. Все, что я хочу, это повернуть текст.

Solutions Collecting From Web of "Android поворачивает TextView в API Level> = 8"

В android для любого нового вида есть метод под названием setRotation (float), который вы можете использовать

 textview.setRotation(float); 

Но учтите, что этот метод добавлен в уровень API 11

Поэтому, если вы хотите его поддержать, вы можете использовать это

 if (Build.VERSION.SDK_INT < 11) { RotateAnimation animation = new RotateAnimation(oldAngel, newAngel); animation.setDuration(100); animation.setFillAfter(true); textview.startAnimation(animation); } else { textview.setRotation(progress); } 

Создайте пользовательский TextView, как это

 public class VerticalTextView extends TextView{ final boolean topDown; public VerticalTextView(Context context, AttributeSet attrs){ super(context, attrs); final int gravity = getGravity(); if(Gravity.isVertical(gravity) && (gravity&Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) { setGravity((gravity&Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP); topDown = false; }else topDown = true; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ super.onMeasure(heightMeasureSpec, widthMeasureSpec); setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); } @Override protected boolean setFrame(int l, int t, int r, int b){ return super.setFrame(l, t, l+(bt), t+(rl)); } @Override public void draw(Canvas canvas){ if(topDown){ canvas.translate(getHeight(), 0); canvas.rotate(90); }else { canvas.translate(0, getWidth()); canvas.rotate(-90); } canvas.clipRect(0, 0, getWidth(), getHeight(), android.graphics.Region.Op.REPLACE); super.draw(canvas); } } 

И использовать canvas.rotate(90) где 90 – угол поворота.

Я обнаружил, что «android: rotation» не работает в SDK 21, другими словами, это Android 5.0. Но я только что нашел эту проблему в предварительном просмотре макета, а не на самом деле на самом деле.