我在图表页面中有一个情况,其中LinearLayout
应显示旋转了90度的TextView
。
答案 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度的右下对齐文本的示例:
[更新] 包含旋转文字的框架视图的示例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功能:
要点是根据文字参数覆盖<script src="https://d3js.org/d3.v4.min.js"></script>
<svg width="500" height="300"></svg>
和onDraw()
方法:
onMeasure()
请查看Vertical (rotated) label in Android以查看完整的源代码。