虽然我正在处理垂直TextView
,但我有两种解决方案之一:
有任何建议或解决方案吗?
以下代码将导致文本视图具有中心位置,如果我需要使垂直视图位于屏幕的右端并垂直集中,该怎么办?
<TextView
android:id="@+id/descriptionTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:rotation="-90"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="15sp"
tools:text="Please Center your image" />
答案 0 :(得分:1)
以下是帮助您的自定义类
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.TextView;
/**
* Created by DB Solanki on 22/3/18.
*/
public class VTextView extends TextView {
final boolean isTop;
public VTextView(Context context, AttributeSet attrs){
super(context, attrs);
final int mGravity = getGravity();
if(Gravity.isVertical(mGravity) && (mGravity&Gravity.VERTICAL_GRAVITY_MASK) == Gravity.BOTTOM) {
setGravity((mGravity&Gravity.HORIZONTAL_GRAVITY_MASK) | Gravity.TOP);
isTop = false;
}else
isTop = true;
}
@Override
protected void onMeasure(int mWidthMeasureSpec, int mHeightMeasureSpec){
super.onMeasure(mHeightMeasureSpec, mWidthMeasureSpec);
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}
@Override
protected boolean setFrame(int l, int t, int r, int b){
return super.setFrame(l, t, l+(b-t), t+(r-l));
}
@Override
public void draw(Canvas mCanvas){
if(isTop){
mCanvas.translate(getHeight(), 0);
mCanvas.rotate(90); //Here rotate view to 90degree
}else {
mCanvas.translate(0, getWidth());
mCanvas.rotate(-90);
}
mCanvas.clipRect(0, 0, getWidth(), getHeight(), android.graphics.Region.Op.REPLACE);
super.draw(mCanvas);
}
}
答案 1 :(得分:0)
我确实喜欢这个
尝试这样: -
<TextView
android:layout_width="10dp"
android:layout_height="200dp"
android:text="Abhinav Gupta"/>
根据height
获取text
并根据width
textSize
答案 2 :(得分:0)
您可以为文字添加枢轴位置。
android:transformPivotX="200dp"