Ems란? (Android TextView)
(TextView와 관련된) Ems란 무엇을 의미합니까?예를 들어 에
android:ems setEms(int)
TextView(텍스트 보기)의 너비를 정확히 이렇게 만듭니다.
android:ems
아니면setEms(n)
는 실제 텍스트 확장자 및 텍스트 크기에 관계없이 n개 'M'자의 텍스트에 맞도록 텍스트 보기의 너비를 설정합니다.위키백과 Emunit 참조
하지만 그 때만layout_width
로 설정됩니다."wrap_content"
.다른.layout_width
values는 ems width 설정을 재정의합니다.
추가하기android:textSize
attribute는 위의 n'M' 집합의 텍스트 크기 * 길이에 대한 보기의 물리적 너비를 결정합니다.
EMS는 타이포그래피 용어로 텍스트 크기 등을 제어합니다.여기서 확인
그것은 주어진 영어 글꼴 크기에서 M 글자의 너비입니다.
따라서 2em은 이 주어진 글꼴에서 글자 M의 너비의 두 배입니다.
영어가 아닌 글꼴의 경우 해당 글꼴에서 가장 넓은 문자의 너비입니다.픽셀 단위의 이 너비 크기는 영어 글꼴의 M 너비 크기와 다르지만 여전히 1em입니다.
그래서 만약 내가 영어 글꼴에 12sp가 있는 텍스트를 사용한다면, 1em은 이 12sp 영어 글꼴과 상대적입니다. 12sp가 있는 이탈리아 글꼴을 사용하면 영어 글꼴과 픽셀 폭이 다른 1em을 얻을 수 있습니다.
다른 답변들은 이미 질문을 충족시켰지만(결국 3년 된 질문입니다), 저는 단지 몇 가지 정보를 추가하고, 아마도 약간의 오해를 고칠 것입니다.
Em은 타이포그래피에서 원래 단일 'M' 문자의 너비를 의미했지만 디지털 매체에서는 글꼴의 점 크기에 상대적인 단위(폰트 크기 또는 textSize)로 이동했습니다. 즉, 단일 'M' 문자의 너비가 아니라 텍스트의 높이를 사용합니다.
Android에서는 TextView의 ems를 지정할 때 액센트/격언에 추가된 패딩을 제외하고 TextView의 textSize를 기본으로 사용합니다.16sp TextView의 ems를 4로 설정하면 너비가 64sp임을 의미하므로 너비 10ms EditText가 17 'M'에 맞는 이유에 대한 @stefan의 의견을 설명합니다.
em은 글꼴 너비의 타이포그래피 단위입니다.16점 서체에 하나의 em은 16점입니다.
ems는 측정 단위입니다.
em이라는 이름은 원래 수도 M의 너비를 가리키는 말이었습니다.실제 텍스트 확장자와 텍스트 크기에 관계없이 텍스트 보기/텍스트 편집의 너비를 n개 'M'자의 텍스트에 맞도록 설정합니다.
예:
android:ems
EditText(편집 텍스트)의 너비를 정확히 이 크기로 만듭니다.
<EditText
android:ems="2"
/>
문자 M이 만들어지는 너비의 두 배를 나타냅니다.
em
는 기본적으로 글꼴 크기에 대한 CSS 속성입니다.
em과 ex 단위는 글꼴에 따라 다르며 문서의 각 요소마다 다를 수 있습니다.em은 단순히 글꼴 크기입니다.글꼴이 2인치인 요소에서 1em은 따라서 2인치를 의미합니다.여백과 패딩과 같은 크기를 em으로 표현하는 것은 글꼴 크기와 관련이 있음을 의미하며, 사용자가 큰 글꼴(예: 큰 화면) 또는 작은 글꼴(예: 핸드헬드 장치)을 가지고 있는 경우 크기가 비례합니다.텍스트 독립: 1.5em 및 마진: 1em과 같은 선언은 CSS에서 매우 일반적입니다.
출처 : https://www.w3.org/Style/Examples/007/units
Android의 다른 답변에 덧붙이자면, Ems 크기는 기본적으로 각 언어와 입력에서 달라질 수 있습니다.
문자 수에 따라 정의된 텍스트 필드에 최소 너비를 설정하려면 Ems 속성을 가진 자신의 서체와 글꼴 크기에 따라 Ems를 제대로 계산하여 설정해야 합니다.
이 문제로 어려움을 겪고 계신 분들은 직접 힌트 크기를 계산하여 Ems를 건드리는 것을 방지할 수 있습니다.
val tf = TextField()
val layout = TextInputLayout()
val hint = "Hint"
val measureText = tf.paint.measureText(hint).toInt()
tf.width = tf.paddingLeft + tf.paddingRight + measureText.toInt()
layout.hint = hint
언급URL : https://stackoverflow.com/questions/7053738/what-is-meant-by-ems-android-textview
'code' 카테고리의 다른 글
C 프로그램이 종료하지 않고 코어 덤프를 생성할 수 있는 방법은 무엇입니까? (0) | 2023.10.05 |
---|---|
SQL - Oracle에서 일치하는 간격 찾기 (0) | 2023.10.05 |
후속작:여러 데이터베이스 사용 (0) | 2023.10.05 |
Karma가 Chrome에서 작동하도록 하는 방법 (0) | 2023.10.05 |
자바스크립트에서 이중 느낌표(!!!)는 어떻게 작동합니까? (0) | 2023.09.25 |