如何旋转TextView 90度并显示

时间:2012-01-22 04:53:05

标签: android

我在图表页面中有一个情况,其中LinearLayout应显示旋转了90度的TextView

6 个答案:

答案 0 :(得分:54)

试试这个::

<TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:rotation="-95"
                android:text="2" 
                />

答案 1 :(得分:38)

最快捷,最方便的方法是Rotate Animation

在常规TextView上使用旋转动画,如此。

rotateAnimation.xml:

<rotate  xmlns:android="http://schemas.android.com/apk/res/android"
           android:fromDegrees="0" 
           android:toDegrees="-90"
           android:pivotX="50%"
           android:duration="0"
           android:fillAfter="true" />

Java代码:

  TextView text = (TextView)findViewById(R.id.txtview);       
  text.setText("rotated text here");

  RotateAnimation rotate= (RotateAnimation)AnimationUtils.loadAnimation(this,R.anim.rotateAnimation);
  text.setAnimation(rotate);

答案 2 :(得分:13)

在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);
    watermarkText.startAnimation(animation);
} else {

    watermarkText.setRotation(progress);
}

答案 3 :(得分:5)

 <TextView 
            android:id="@+id/rotated_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:alpha=".3"
            android:background="@drawable/grey_capsule"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="14sp"
            android:padding="4dp"
            android:layout_marginLeft="-50dp"
            android:rotation="-90"
            android:text="Andrew Coder" />

答案 4 :(得分:4)

[求助] 在论坛上一年没有任何合适的答案后,我终于整理了这个!

这里的技巧是硬编码TextView的layout_width和layout_height比文本更大 - 例如100dp x 100dp。

然后将TextView放入FrameLayout并关闭FrameLayout android:clipChildren="false"的剪裁,并剪切以填充TextView android:clipToPadding="false"

TextView with hard-coded height and width

TextView现在将浮动在FrameLayout中。使用TextView重力设置将文本移动到其边界内。

然后使用layout_gravity设置在其中的父FrameLayout内移动边界:

以下是旋转-90度的右下对齐文本的示例:

Solution example

[更新] 包含旋转文字的框架视图的示例XML:

       <FrameLayout
            android:layout_width="@dimen/item_col_width_val"
            android:layout_height="match_parent"
            android:layout_weight="0.25"
            android:padding="@dimen/table_header_margin">
            <TextView
                android:layout_width="@dimen/table_title_row_height"
                android:layout_height="@dimen/table_title_row_height"
                android:layout_gravity="bottom|end"
                android:gravity="bottom"
                android:rotation="-90"
                android:text="@string/asm_col_title_in_stock"
                android:textColor="@color/colorGood" />
        </FrameLayout>

答案 5 :(得分:0)

如果您不需要动画,那么您可以尝试使用类似的question提供的解决方案。文本将从下到上书写。

它支持所有基本的TextView功能:

  • 文字大小
  • 文字颜色
  • text font
  • 文字填充
  • 通过XML使用

要点是根据文字参数覆盖<script src="https://d3js.org/d3.v4.min.js"></script> <svg width="500" height="300"></svg>onDraw()方法:

onMeasure()

请查看Vertical (rotated) label in Android以查看完整的源代码。