TextView旋转保持宽度和高度

cgt*_*lnc 5 xml android rotation alignment textview

我试图旋转文本视图,但当我旋转它时,它保持宽度和高度信息

我希望所选区域消失,我只想将文本显示在绿色指示器对中居中.我正在更改java部分中的文本'Small Text',但是当文本的长度发生变化时,对齐变得疯狂(picture3)

这是我的代码我做错了什么?

<ImageView
        android:id="@+id/statusIcon"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/bulletgreen"
        android:layout_marginRight="5dp"
         />

        <TextView
            android:id="@+id/status"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_marginLeft="5dp"
            android:rotation="-90"
            android:text="Small Text"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textSize="10sp"
            android:textStyle="bold" />
Run Code Online (Sandbox Code Playgroud)

http://postimg.org/image/9e92i8k2j/ - > 2 http://postimg.org/image/lfdj7udhv/ - > 3

Cod*_*mbs 10

编写一个从TextView继承的简单自定义控件(通过nidhi)可能是最好的服务

这是该课程的副本.

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 void onDraw(Canvas canvas) {
    if (topDown) {
        canvas.translate(getWidth(), 0);
        canvas.rotate(90);
    } else {
        canvas.translate(0, getHeight());
        canvas.rotate(-90);
    }

    canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());
    getLayout().draw(canvas);
}
}
Run Code Online (Sandbox Code Playgroud)

这个解决方案有一些缺点(在博客文章中提到),但它的效果非常好.这是我发现的最简单,最孤立的解决方案.它可以放入代码文件中并立即投入使用.此外,它在布局预览中正确显示,与大多数涉及旋转动画的黑客不同.

  • 很好的解决方案,现在问题是旋转后我不能再改变我的 TextView 颜色,它总是黑色的 (3认同)