간혹 이런 일이 있는 듯하다.
나 또한, 회사에서 디바이스별로 대응하기 위해서도 있지만,
일반적인 디바이스와 태블릿 디바이스로 크게 나누었을 때,
일반적인 디바이스에서 크기를 고정해서 앱을 출시하는 쪽으로 가는 경우 말이다.
그런 경우 때문에 회사에 요구대로 기존 텍스트를 sp로 사용했던 것을
dp로 변환하는 작업을 하게 되었다.
하지만, 이미 만들어진 앱은 모든 text가 sp로 되어 있었다.
나는 그래서 답을 찾았다.
sp로 되어 있어도,
모든 앱을 sp 자체를 고정시킨 값으로 디바이스에 적용시킬 수 있다.
바로 다음 코드이다.
@Override
protected void attachBaseContext(Context newBase) {
final Configuration override = new Configuration(newBase.getResources().getConfiguration());
override.fontScale = 1.0f;
applyOverrideConfiguration(override);
super.attachBaseContext(newBase);
}
attachBaseContext에 대한 설명은 아직 나도 이 부분을 공부하지 못했기
때문에 자세히는 모르지만,
ContextWrapper에서 Context에 구현체를 바꾸는 메서드가 attachBaseContext라고 한다.
위에 코드로 인한 설정으로 인해,
이 디바이스에서 사용하는 폰트 크기가 1.0f로 고정이 되어
ui에 사용된 text size들이 모두 고정값으로 변경된다.
실시간 업데이트 요소수 앱 "요소수 주유소"
구글 플레이 스토어에서 만나보세요.
https://play.google.com/store/apps/details?id=com.diesel.gasstation