android - TextView 旋转保持宽度和高度

标签 android xml rotation textview alignment

我试图旋转一个 TextView ,但是当我旋转它时,它会保留宽度和高度信息

我想选择的区域不见了我只想让文本出现在居中对齐的绿色指示器上。我正在更改 java 部分中的文本“小文本”,但是当文本的长度发生变化时,对齐变得疯狂(图片 3)

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

<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" />

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

最佳答案

您最好编写一个继承自 TextView 的简单自定义控件(通过 nidhi)

这是类(class)的副本。

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);
}
}

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

关于android - TextView 旋转保持宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23311484/

相关文章:

java - java 中的替代 xml 绑定(bind)

image - 如何获取旋转图像的四个角?

javascript - 间隔旋转

java - 我的二维数组行不旋转

android - 无法添加 Android Material Design 工具栏

java.lang.NullPointerException Spring Mvc

android - 下载 apk 并在 android 应用程序中开始安装提示

c# - XML 或 Markdown 文档?作为一名新程序员从哪里开始

android - 如何正确地将数据从 recyclerView 获取到设置了 RV 的 Activity?

android - 在 Android 中禁用文本的默认 css 设置