在文本视图中以45度显示文本,具有自定义背景。

时间:2014-10-25 13:42:05

标签: android android-canvas textview

我在列表中有一个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");

结果:

enter image description here

所需:

enter image description here

3 个答案:

答案 0 :(得分:1)

我试图在我的项目中做同样的事情。我为此使用了android:rotationandroid:translationXandroid:translationY属性。我添加了android:paddingStartandroid: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"