민프

[Android] StaticLayout을 이용해서 Canvas에 텍스트를 MulitLine으로 만들어보자!! 본문

[Android]

[Android] StaticLayout을 이용해서 Canvas에 텍스트를 MulitLine으로 만들어보자!!

민프야 2021. 7. 2. 19:36

여행기 정보를 PDF로 옮길때 
텍스트 부분을 canvas.drawText를 이용해서 그려줬는데
밑 사진 처럼
MultiLine이 되지 않고 가로로 쭉~ 이어져서 모든 내용을 볼 수가 없었다..

글자가 전체 Layout의 폭을 넘어갈때 자동으로 밑으로 넘겨주는 것을 찾아보았는데
안드로이드에서 기본으로 제공하고 있는 StaticLayout이 있었다~(역시 구글링..)

StaticLayout을 이용하기 위해
API 24 부터는 Builder을 이용한 생성자방식을 사용하여야 한다.

  String get_memo = pdf_root_text_memo.getText().toString();

        title_paint.setTextAlign(Paint.Align.CENTER);
        title_paint.setTypeface(Typeface.create(Typeface.DEFAULT,Typeface.BOLD));
        title_paint.setTextSize(20);
        canvas.drawText(get_memo,595/2,500,title_paint); //staticLayout 적용안한 글

        StaticLayout.Builder builder = StaticLayout.Builder.obtain(get_memo
                , 0
                , get_memo.length()
                , title_paint
                , 300 );
        StaticLayout textLayout = builder.build();


        canvas.save();
        canvas.translate(595/2,0);
        textLayout.draw(canvas);
        canvas.restore();

이미지를 보면 StaticLayout을 적용해서 MulitLine이 가능하도록 해보았다.

Comments