Moon_Dev_Blog :)

[Android] 텍스트뷰 세로방향으로 글쓰기 본문

IT/Android

[Android] 텍스트뷰 세로방향으로 글쓰기

돌베기 2019. 7. 22. 00:52

    안녕하세요. 본 포스팅은 주관적으로 작성되며, 틀린 정보가 있을시에 따끔한 충고 부탁드리겠습니다. 감사합니다. 

 

    내용 : android 주요 View중 하나인 TextView의 내용을 세로로 입력하기 위한 Custom 해보도록 하겠습니다.

 

    .java 

package com.test.util;

 

import android.content.Context;

import android.graphics.Canvas;

import android.text.TextPaint;

import android.util.AttributeSet;

 

public class VerticalTextView extends android.support.v7.widget.AppCompatTextView {

 

    public VerticalTextView(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

 

    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        super.onMeasure(heightMeasureSpec, widthMeasureSpec);

        setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());

    }

 

    // 텍스트뷰 가로 입력

    @Override

    protected void onDraw(Canvas canvas) {

        // Custom View를 생성할때 원하는 폰트 , 색상 , 크기 설정

        TextPaint textPaint = getPaint();

        textPaint.setColor(getCurrentTextColor());

        textPaint.drawableState = getDrawableState();

 

        // View를 그리위한 객체 Canvas

        canvas.save();

 

        canvas.translate(0, getHeight());

        canvas.rotate(-90); // 90도로 회전

 

        canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());

 

        getLayout().draw(canvas);

        canvas.restore(); // Canvas 상태를 복원합니다.

    }

}

 

Colored by Color Scripter

 

    .xml

<com.test.util.VerticalTextView

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:background="#343254"

    android:fontFamily="sans-serif-bold"

    android:gravity="center_vertical"

    android:includeFontPadding="false"

    android:text="Day Shift"

    android:textAlignment="center"

    android:textColor="#FFFFFF"

    app:scale_height="70"

    app:scale_textsize="5.5"

    app:scale_width="7" 

/>

Colored by Color Scripter

 

    결과화면 Preview

Comments