android:pdfdocument:multiline
multiline
문서의 이전 판입니다!
목차
목적
코드
다음이 전체 코드이다.
// body Text fun bodyText(text : String, canvas: Canvas) { val textLayout = StaticLayout.Builder.obtain(text, 0, text.length, cellBodyLeft, 400) .setAlignment(Layout.Alignment.ALIGN_NORMAL) .setLineSpacing(0f, 1.2f) .setIncludePad(true).build() canvas.save() canvas.translate(50f, 350f) textLayout.draw(canvas) canvas.restore() }
1. static layout
가. obtain
obtatin 함수는 다음과 같이 인자를 받는다.
obtain(CharSequence source, int start, int end, TextPaint paint, int width)
첫번째는 텍스트, 두번째 시작하는 문자, 세번째는 끝나는 문자의 위치, 네번째는 페인터, 마지막은 레이아웃의 너비이다.
여기서 페인터는 통상읜 Paint가 아니라 TextPaint임을 유의하자. TextPaint는 Paint를 상속받으므로,
기존에 Paint로 선언했다면, 그냥 TextPaint로 선언하면 된다.
obtain함수에서 글자를 그릴 너비를 받아서, 이 너비 이상이 되면 줄 바뀜을 하게 해준다.
나. setAlignment
글자를 정렬하는 것이다. Layout.Alignment를 enum으로 변수롷 받는다.
디폴트값은 디폴트 값은 Layout.Alignment#ALIGN_NORMAL 이다1)).
각각 다음과 같다.
- ALIGN_NORMAL : 왼쪽 정렬
- ALIGN_CENTER : 가운데 정렬
- ALIGN_OPPOSITE : 오른쪽 정렬
위 그림은 다음의 코드를 이용하여 구현하였다.
(1) 구현 함수
fun bodyText(text : String, canvas: Canvas, layout : Layout.Alignment) { val textLayout = StaticLayout.Builder.obtain(text, 0, text.length, cellBodyLeft, 400) .setAlignment(layout) .setLineSpacing(0f, 1.2f) .setIncludePad(true).build() canvas.save() canvas.translate(50f, currentPOS.Y.toFloat()) textLayout.draw(canvas) canvas.restore() currentPOS.Y+= textLayout.height + 20 }
(2) 호출함수
pdfUtil.headerText("1. ALIGN_NORMAL", canvas) pdfUtil.bodyText("우리는 민족중흥의 역사적 사명을 띠고 이 땅에 태어났다. 조상의 빛난 얼을 오늘에 되살려, 안으로 자주독립의 자세를 확립하고, 밖으로 인류 공영에 이바지할 때다. 이에, 우리의 나아갈 바를 밝혀 교육의 지표로 삼는다.\n" ,canvas) pdfUtil.headerText("2. ALIGN_CENTER", canvas) pdfUtil.bodyText("우리는 민족중흥의 역사적 사명을 띠고 이 땅에 태어났다. 조상의 빛난 얼을 오늘에 되살려, " + "안으로 자주독립의 자세를 확립하고, 밖으로 인류 공영에 이바지할 때다. 이에, 우리의 나아갈 바를 밝혀 교육의 지표로 삼는다.\n" ,canvas, Layout.Alignment.ALIGN_CENTER) pdfUtil.headerText("3. ALIGN_OPPOSITE", canvas) pdfUtil.bodyText("우리는 민족중흥의 역사적 사명을 띠고 이 땅에 태어났다. 조상의 빛난 얼을 오늘에 되살려, " + "안으로 자주독립의 자세를 확립하고, 밖으로 인류 공영에 이바지할 때다. 이에, 우리의 나아갈 바를 밝혀 교육의 지표로 삼는다.\n" ,canvas, Layout.Alignment.ALIGN_OPPOSITE)
1)
https://developer.android.com/reference/android/text/StaticLayout.Builder#setAlignment(android.text.Layout.Alignment
android/pdfdocument/multiline.1734019344.txt.gz · 마지막으로 수정됨: 2024/12/13 01:02 저자 이거니맨
로그인