안드로이드 TextView Padding 문제 :: 그래픽[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

그래픽
[1]
등록일:2020-01-03 10:58:56 (0%)
작성자:
제목:안드로이드 TextView Padding 문제

디자인가이드를 적용하면서 문제가 발생하는 부분은 역시 TextView 패딩

  • TextView로 구성된 화면에서 마진으로 간격이 조정된 디자인 가이드를 받으면 생각 했던거 보다 간격이 훨씬 벌어짐
  • 처음에 적용 했던 내용은 includeFontPadding을 false 로 적용 함
  • 약간 줄어 들긴 하지만 완벽 하게 적용 되진 않았습니다.
  • 아래 이미지

    • 이렇게
    • 왼쪽이 일반 TextView에 includeFontPadding를 적용한 버전, 패딩을 완전히 제거한 버전 입니다.
    • xml 코드 첨부하였습니다.
        <TextView
              android:includeFontPadding="false"
              android:background="#00ff00"
              android:text="ABCD"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />
    
        <NPTextView
              android:includeFontPadding="false"
              android:background="#00ff00"
              android:text="ABCD"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />
    
    
  • NPTextView는 1줄 짜리에만 적용해서 사용해야 합니다. 여러줄은 아직 동작 안합니다.

  • 그리고 직접 추가한 패딩 역시 제거하기때문에 잘 사용해야 합니다.

  • 코드 내용은 텍스트 크기를 읽어서 Rect 사이즈를 타이트하게 고정하는 내용입니다.

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
/**
* Created by phkim on 2017-11-24.
*/
public class NPTextView extends android.support.v7.widget.AppCompatTextView {
private Paint mPaint;// = new Paint();
private final Rect mBounds = new Rect();
public NPTextView(Context context) {
super(context);
initPaint();
}
public NPTextView(Context context, AttributeSet attrs) {
super(context, attrs);
initPaint();
}
public NPTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
}
private void initPaint(){
mPaint = getPaint();
}
@Override
protected void onDraw(@NonNull Canvas canvas) {
final String text = calculateTextParams();
final int left = mBounds.left;
final int bottom = mBounds.bottom;
mBounds.offset(-mBounds.left, -mBounds.top);
mPaint.setAntiAlias(true);
mPaint.setColor(getCurrentTextColor());
canvas.drawText(text, -left, mBounds.bottom - bottom, mPaint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
calculateTextParams();
setMeasuredDimension(mBounds.width() + 1, -mBounds.top + 5);
}
private String calculateTextParams() {
final String text = getText().toString();
final int textLength = text.length();
mPaint.setTextSize(getTextSize());
mPaint.getTextBounds(text, 0, textLength, mBounds);
if (textLength == 0) {
mBounds.right = mBounds.left;
}
return text;
}
}
[본문링크] 안드로이드 TextView Padding 문제
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34914
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.