gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:05 27 4
gpt4 key购买 nike

我试图旋转一个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com