TextView에 Rotation주기 (글자를 세로로 표시)


텍스트를 세로로 표시해주기위해서 rotation에 -90.0을 주었는데 여기서 문제가 생겨 질문드려요 ㅠㅠ

이미지 이름이나 설명을 여기에 넣어주세요.

지금 이 상태에서 -90.0으로 주었는데

이미지 이름이나 설명을 여기에 넣어주세요.

저렇게 돌아가서 보이는 것을 구현하려는 것은 맞지만, 저 택스트 뷰를 감싸고 있는 LinearLayout의 크기가 바뀌지 않네요 ㅠ

1번 사진에서 LinearLayout의 width를 wrap_content로 두었더니, rotation되기 전의 크기로 고정이 되어서 회전을 한 후에도 그 크기로 남아서 사진2처럼 텍스트뷰 양옆으로 공간이 생겨있습니다. 저것을 원하지는 않았는데 말이죠 ㅠ 그래서 LinearLayout의 width를 텍스트 사이즈와 같게 해봤더니, 로테이션 되기전에 텍스트뷰안의 텍스트가 두줄로 써진 상태로 로테이션 되어 회전후에도 두줄로 남아버렸습니다.

사진2번에서 텍스트뷰의 양옆 공백을 없에려면 어떻게 해야하나요?


조회수 549


1 답변


좋아요
3
싫어요
채택취소하기

TextView를 상속받아서 뷰를 돌리면 될 것 같네요.

package com.example.myapplication;

import android.content.Context;
import android.graphics.Canvas;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.TextView;

public class CustomTextView extends TextView {

    public CustomTextView(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){
        TextPaint textPaint = getPaint();
        textPaint.setColor(getCurrentTextColor());
        textPaint.drawableState = getDrawableState();

        canvas.save();

        canvas.translate(getWidth(), 0);
        canvas.rotate(90); //원하는 방향 설정

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

        getLayout().draw(canvas);
        canvas.restore();
    }
}

그리고 xml에

    <com.example.myapplication.CustomTextView
        android:id="@+id/txt_123"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="abcdefgdddddd"
        />

이렇게 지정해주시면 됩니다.


  • 감사합니다!    TuTanKhamen   2016.4.16 11:56     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close