programing

Android TextView에서 줄 바꿈을 추가하는 방법은 무엇입니까?

padding 2023. 8. 16. 22:03
반응형

Android TextView에서 줄 바꿈을 추가하는 방법은 무엇입니까?

텍스트 보기에 줄 바꿈을 추가하려고 합니다.

나는 제안을 하려고 했지만 아무 소용이 없었습니다.제가 문자를 설정하는 방법은 다음과 같습니다.

TextView txtSubTitle = (TextView)findViewById(r.id.txtSubTitle);
txtSubTitle.setText(Html.fromHtml(getResources().getString(R.string.sample_string)));

의 String: 내문입니다열자입니다.<string name="sample_string">some test line 1 \n some test line 2</string>

다음과 같이 표시됩니다.

some test line 1
some test line 2

그러나 다음과 같이 표시됩니다.some test line 1 some test line 2.

내가 뭘 빼놓았나요?

\n저한테는 효과가 있어요, 다음과 같습니다.

<TextView android:text="First line\nNext line"

네, 알아냈어요:

<string name="sample_string"><![CDATA[some test line 1 <br />some test line 2]]></string>

그래서 CDATA로 랩을 해야 하고 안에 html 태그로 브레이크가 추가되었습니다.

Android 버전 1.6은 \r\n을 인식하지 못합니다.대신 System.getProperty("line.separator")를 사용합니다.

String s = "Line 1"
           + System.getProperty("line.separator")
           + "Line 2"
           + System.getProperty("line.separator");

줄 바꿈(\n)은 문자열 리소스 값을 다음과 같은 따옴표로 묶은 경우에만 작동합니다.

<string name="sample_string">"some test line 1 \n some test line 2"</string>

다음과 같은 따옴표 없이 입력하면 줄 바꿈이 수행되지 않습니다.

<string name="sample_string">some test line 1 \n some test line 2</string>

네, 그렇게 쉽습니다.

위의 모든 것을 시도하고, 나 자신의 연구를 통해 라인피드 이스케이프 문자를 렌더링하기 위한 다음 솔루션을 만들었습니다.

string = string.replace("\\\n", System.getProperty("line.separator"));
  1. 대체 방법을 사용하여 이스케이프된 라인 피드를 필터링해야 합니다(예: '\\n').

  2. 라인피드 '\n' 이스케이프 문자의 각 인스턴스가 실제 라인피드로 렌더링됩니다.

이 예에서는 JSON 형식의 데이터가 포함된 Google Apps Scripting noSQL 데이터베이스(ScriptDb)를 사용했습니다.

건배사 : D

두 가지 방법이 있습니다.문자열을 원시 문자열로 사용하는 경우 새 줄 문자를 사용해야 합니다.를 들어 html로 html로 구문 할 수 .Html.fromString두 번째 변종이 더 낫습니다.

문자\n

<string name="sample">This\nis a sample</string>

태그 HTML 새줄그태<br>또는<br />

<string name="sample">This<br>is a sample</string>

이것은 나에게 효과가 있었습니다.

android:text="First \n Second"

이것은 저에게 효과가 있었습니다. 아마도 누군가가 이것이 도움이 된다는 것을 알게 될 것입니다.

TextView textField = (TextView) findViewById(R.id.textview1);
textField.setText("First line of text" + System.getProperty("line.separator") + "Linija 2");

XML을 사용합니다. TextView를 사용합니다.android:singleLine = "false"에서는 자바를 합니다.txtSubTitle.setSingleLine(false);

Android Studio 0.8.9 버전제게 효과가 있는 유일한 방법은\n 또는 CDATA로 <br>또는<br />일했다.

다음을 사용합니다.

YOUR_TEXTVIEW.setText("Got some text \n another line");

매우 쉽습니다: "\n"을 사용합니다.

    String aString1 = "abcd";
    String aString2 = "1234";
    mSomeTextView.setText(aString1 + "\n" + aString2);

\n은 'LF' 또는 라인 피드인 ASCII char 0xA에 해당합니다.

\r은 ASCII 문자 0xD에 해당하며, 이는 'CR' 또는 캐리지 리턴입니다.

이것은 라인 피드(그리고 한 줄만 더 낮게 입력) 또는 라인 피드 + 캐리지 리턴(또한 한 줄의 시작 부분으로 이동)만 수행하도록 선택할 수 있었던 최초의 타자기로 거슬러 올라갑니다.

Android/java에서 \n은 캐리지 리턴 + 라인 피드에 해당합니다. 그렇지 않으면 동일한 라인을 '덮어쓰기'할 수 있습니다.

제가 이전 버전의 안드로이드 스튜디오에서 알고 있는 바와 같이 별도의 라인 "\n" 코드를 사용합니다.그러나 새 버전(4.1.2)에서는 "<br/"를 사용하여 줄을 구분합니다.예: 이전 항목:

<string name="string_name">Sample text 1 \n Sample text 2 </string>

새 항목:

<string name="string_name">Sample text 1 <br/> Sample text 2 </string>

또한 추가할 수 있습니다."&lt;br&#47;&gt;"\n대신에.

<br/>용 HTML 이스케이프 코드입니다.

그런 다음 텍스트를 TexView에 추가할 수 있습니다.

articleTextView.setText(Html.fromHtml(textForTextView));

현지화를 다시 확인해 보십시오.한 파일을 편집하려고 할 수도 있습니다(현지화). 하지만 실제로는 다른 파일을 사용하여 프로그래밍합니다.기본 시스템 언어는 러시아어이며 영어 현지화를 편집하려고 합니다.

제 경우, 작업 솔루션은 \n을 줄 구분 기호로 사용하는 것입니다.

    <string name="string_one">line one.
    \nline two;
    \nline three.</string>

Android Studio의 String-Editor를 사용할 수도 있습니다. 자동으로 라인 브레이크 등을 생성합니다.

~하듯이Html.fromHtml저는 단순히 String2를 다음 줄에 넣기 위해 이 코드를 사용하는 것을 권장하지 않습니다.

textView.setText(fromHtml("String1 <br/> String2"));

.

@SuppressWarnings("deprecation")
    public static Spanned fromHtml(String html){
        Spanned result;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
            result = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
        } else {
            result = Html.fromHtml(html);
        }
        return result;
    }

가장 쉬운 방법은 리소스 폴더의 값/문자열로 이동하는 것입니다.

여기서 문자열 선언:

    <string name="example_string">Line 1\Line2\Line n</string>

그리고 특정 xml 파일에서 다음과 같은 문자열을 호출합니다.

    <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/example_string" />

다른 방법을 찾았습니다."android:maxWidth="40dp" 특성을 추가해야 합니다.물론 완벽하게 작동하지 않을 수도 있지만 줄 바꿈을 줍니다.

\n는 나를 위해 일하지 않았습니다.xml을 텍스트로 변경하고 아래와 같이 텍스트 뷰 텍스트 속성을 구축하여 문제를 해결할 수 있었습니다.

android:text="Line 1
Line 2
Line 3

DoubleSpace"

이것이 \n이 그들을 위해 일하지 않았다고 말한 사람들에게 도움이 되기를 바랍니다.

파일에서 텍스트를 읽고 있기 때문에 파일에 \n을 추가하면 텍스트에 \n이 표시되기 때문에 약간 다른 접근 방식을 취했습니다.

    final TextView textView = (TextView) findViewById(R.id.warm_up_view);
    StringBuilder sb = new StringBuilder();
    Scanner scanner = new Scanner(getResources().openRawResource(R.raw.warm_up_file));
    while (scanner.hasNextLine()) {
      sb.append(scanner.nextLine());
      sb.append("\n");
    }

    textView.setText(sb.toString());

저의 경우 다음을 추가하여 이 문제를 해결했습니다.

android:inputType="textMultiLine"

텍스트에 자신을 넣을 수는 있지만 표시가 안 되나요?컨트롤에 충분한 높이가 있는지 확인합니다.예:

정답:

android:layout_height="wrap_content"

틀릴 수 있음:

android:layout_height="10dp"

저는 이것이 어떻게 더 철저하게 작동하는지 설명하기 위해 더 완전한 답변이 필요하다고 생각합니다.

먼저 고급 포맷이 필요한 경우 문자열 리소스에서 HTML을 사용하는 방법에 대한 설명서를 확인합니다.
그러면 사용할 수 있습니다.<br/> 이 경우 codedll을 해야 합니다. 그러나 이 경우 코드를 사용하여 텍스트를 설정해야 합니다.

일반 텍스트인 경우 정적 문자열 리소스에서 줄 바꿈 문자(LF)를 피하는 방법은 여러 가지가 있습니다.

문자열을 큰따옴표로 묶기

가장 깨끗한 방법은 문자열을 큰따옴표로 묶는 것입니다.
이렇게 하면 공백이 축소된 것이 아니라 나타나는 대로 정확히 해석됩니다.
그런 다음 이 방법에서는 새 줄을 일반적으로 사용할 수 있습니다( 들여쓰기 사용 안 함).

<string name="str1">"Line 1.
Line 2.
Line 3."</string>

일부 문자는 이 모드에서 특수 이스케이프가 필요합니다(예:\").

아래 이스케이프 시퀀스는 따옴표로 묶은 모드에서도 작동합니다.

XML에서 한 줄을 사용하여 여러 줄 문자열을 나타내는 경우

XML에서 새 줄을 벗어나는 가장 우아한 방법은 XML/HTML 엔티티를 사용하여 코드 포인트(16진수로 10 또는 0xA)를 사용하는 것입니다.&#xA;또는&#10;이것이 모든 문자를 이스케이프하는 XML 방법입니다.
그러나 따옴표로 묶은 모드에서만 작동하는 것 같습니다.

또 다른 방법은 단순히 사용하는 것입니다.\n가독성에는 부정적인 영향을 미치지만 (XML에서 특별한 이스케이프 시퀀스가 아니기 때문에 Android Studio는 강조하지 않습니다.)

<string name="str1">"Line 1.&#xA;Line 2.&#10;Line 3."</string>
<string name="str1">"Line 1.\nLine 2.\nLine 3."</string>
<string name="str1">Line 1.\nLine 2.\nLine 3.</string>

이러한 이스케이프 시퀀스 뒤에 새 줄이나 공백을 포함하지 마십시오. 추가 공간으로 해석됩니다.

저는 다음과 같은 질문을 하는 것을 추천합니다.line.separator속성을 사용하여 줄 바꿈을 추가할 수 있습니다.

다음은 몇 가지 샘플 코드입니다.

TextView calloutContent = new TextView(getApplicationContext());
calloutContent.setTextColor(Color.BLACK);
calloutContent.setSingleLine(false);
calloutContent.setLines(2);
calloutContent.setText(" line 1" + System.getProperty ("line.separator")+"  line2" );

언급URL : https://stackoverflow.com/questions/5382490/how-to-add-a-line-break-in-an-android-textview

반응형