我在列表中有一个textView,我希望以45度倾斜显示文本,并且中心水平+中心垂直属性。到目前为止:
我的自定义TextView类:
public class AngledTextView extends TextView {
public AngledTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.rotate(45, this.getWidth()/2, this.getHeight()/2);
super.onDraw(canvas);
canvas.restore();
}
}
XML代码:
<com.example.AngledTextView
android:id="@+id/textViewx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView2"
android:layout_alignParentRight="true"
android:layout_below="@+id/relativeSecondary"
android:background="@drawable/image_sticker" />
在课堂上:
final AngledTextView tv_red = (AngledTextView)view.findViewById(R.id.textViewx);
tv_red.setText("Today");
答案 0 :(得分:1)
我试图在我的项目中做同样的事情。我为此使用了android:rotation
,android:translationX
和android:translationY
属性。我添加了android:paddingStart
和android:paddingEnd
来修复文本超出屏幕时的错误。经过大小,翻译和填充的实验后,我将这段代码用于短两行文字:
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/textViewStatus"
android:layout_width="130dp"
android:layout_height="130dp"
android:gravity="bottom|center_horizontal"
android:maxLines="2"
android:paddingBottom="5dp"
android:paddingEnd="31dp"
android:paddingStart="31dp"
android:rotation="45"
android:text="@string/empty"
android:textColor="@android:color/white"
android:textSize="12sp"
android:translationX="65dp"
android:translationY="-65dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
答案 1 :(得分:0)
尝试将此属性添加到自定义TextView
android:rotationX = "45"
其他这在你的java代码中
yourcustomview.setRotation(45);
答案 2 :(得分:0)
设置:
android:rotation="45"
android:background="@drawable/your_drawable"