TextView 에 추가 할 수 있습니까? 비슷한 기능을 달성 한 사람이 있습니까?
TextView에서 깨지지 않는 공간을 원합니다.
답변
TextView
HTML보다 간단하고 가벼운 솔루션 인 유니 코드 줄 바꿈없는 공백 문자 ( \u00A0
)를 존중합니다 .
답변
\u00A0
중단 \u0020
되지 않는 공간이며 중단 되지 않는 공간 이 아닙니다.
답변
읽기 쉬운 솔루션 을 사용 하는 것이 가능합니다. 헥스 코드를 기억하지 않는 한 텍스트에 \u00A0
또는  
또는  
/  
를 포함 하는 것은 소스 코드의 독자 (또는 해당 문제에 대한 번역자)에게 많은 정보를 전달하지 않습니다. 에서 명명 된 엔티티를 사용하는 방법은 다음과 같습니다 strings.xml
.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
<!ENTITY nbsp " "><!-- non-breaking space, U+00A0 -->
]>
<resources>
...
</resources>
누락 된 선언이 생성됩니다. 원래 HTML 선언은 일반적인 XHTML DTD 에서 참조 된 https://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent 에서 찾을 수 있습니다 . XML 파서가 파일을로드하는 동안이를 읽고 대체하기 때문에이 모든 것이 작동하므로 엔터티가 컴파일 된 결과 리소스에 표시되지 않습니다.
Android 텍스트 ( CharSequence
) 리소스
<!-- Defined in <resources> -->
<string name="html_text">Don\'t break <b>this name</b></string>
<!-- Used in a layout -->
<TextView
android:layout_width="130dp"
android:layout_height="wrap_content"
android:background="#10000000"
android:text="@string/html_text"
/>
장치 및 미리보기 (미리보기에서 HTML을 인식하지 못함)
Android String (형식화 된) 리소스
<!-- Defined in <resources> -->
<string name="formatted_text">%1$s is nice</string>
<!-- Used in a layout -->
<TextView
android:layout_width="130dp"
android:layout_height="wrap_content"
android:background="#10000000"
tools:text="@string/formatted_text"
/>
그런 다음 코드에서 :
String contents = getString(R.string.formatted_text, "Using an ");
((TextView)view.findViewById(android.R.id.text1)).setText(contents);
장치 및 미리보기 (미리보기는 엔티티를 인식하지 않으며 Java 문자열은 리터럴 텍스트입니다!)
추가 트릭
이것은 DTD 엔티티의 사용 예일 뿐이며 자신의 선호도에 따라 사용하십시오.
<!ENTITY con "\'"><!-- contraction, otherwise error: "Apostrophe not preceded by \"
Sadly ' cannot be overridden due to XML spec:
https://www.w3.org/TR/xml/#sec-predefined-ent -->
<!ENTITY param1 "%1$s"><!-- format string argument #1 -->
<string name="original">Don\'t wrap %1$s</string>
<string name="with_entities">Don&con;t wrap ¶m1;</string>
답변
TextView는 중단되지 않는 공간을 존중해야합니다.
<string name="test">Hello world</string>
또는
new TextView("Hello\u00A0world");
답변
내가 만난 한 가지 독특한 상황은 String.format
매개 변수 를 사용하는 문자열 리소스에 끊기지 않는 공백을 추가하는 것 입니다.
<resources>
<string name="answer_progress" formatted="false">Answered %d of %d</string>
</resources>
줄 바꿈하지 않는 공백 문자를 문자열에 복사하여 붙여 넣으려고했는데 컴파일 후 일반 이전 공백으로 대체되었습니다.
formatted = “false” 제거, 형식 인수 번호 매기기 및 백 슬래시 표기법 사용이 저에게 효과적이었습니다.
<resources>
<string name="answer_progress">Answered %1$d\u00A0of\u00A0%2$d</string>
</resources>
답변
이것은 나를 위해 일했습니다.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
textview.setText(Html.fromHtml(your string, Html.FROM_HTML_MODE_LEGACY));
} else {
textview.setText(Html.fromHtml(your string);
}
답변
이것은 TextView에서 nbsp를 사용하는 예입니다.
<string name="text">Example:\u00A0</string>