안드로이드에서 여러 줄 TextView?


154

나는 아래에서 좋아했다. xml

<TableRow>
    <TextView android:id="@+id/address1"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4" 
        android:singleLine="false"              
        android:text="Johar Mor, Gulistan-e-Johar, Karachi" >
    </TextView> 
</TableRow>

그것은 작동하지 않으며 multiline사용하고 있습니다 TableLayout...

내가 여기서하는 실수는 무엇입니까?

답변:


197

넣는 텍스트 TextView가 짧으면 자동으로 4 줄로 확장되지 않습니다. 당신이 원하는 경우 TextView합니다 항상 관계없이 설정이 텍스트의 길이의 네 줄이 android:lines속성 :

<TextView
    android:id="@+id/address1"
    android:gravity="left"
    android:layout_height="fill_parent"
    android:layout_width="wrap_content"
    android:maxLines="4"
    android:lines="4"
    android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>

TableRow를 사용 하여이 작업을 수행 할 수 있습니다. 아래 코드를 참조하십시오.

<TableRow >
        <TextView
            android:id="@+id/tv_description_heading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:padding="8dp"
            android:text="@string/rating_review"
            android:textColor="@color/black"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/tv_description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:maxLines="4"`enter code here`
            android:padding="8dp"
            android:text="The food test was very good."
            android:textColor="@color/black"
            android:textColorHint="@color/hint_text_color" />
    </TableRow>

21
OP 텍스트의 길이에 관계없이 TextView가 항상 네 줄을 갖기를 원하지 않았습니다 .
tar

7
이 답변은 저에게 효과적이었습니다. 그러나 최대 줄과 줄이 아니라 최대 줄과 줄을 사용하여 최상의 결과를 얻었으며 줄을 사용하지 않았습니다. 최소값을 1로 설정하고 최대 값을 최대 데이터보다 크게 설정했습니다. 그렇게하면 데이터를 컴팩트하게 볼 수 있도록 1 ~ N 줄을 얻습니다.
R Earle Harris

1
@ REarleHarris : 나도 같은 솔루션을 시도했지만 문제는 maxLines 수를 계산하지 않는다는 것입니다. 모든 데이터는 minLines 수로 표시됩니다. 지금 시도 할 수있는 것은 XML에서 사용자 정의
텍스트 뷰를 사용하는 것입니다

119

방금 다음을 사용하면 추가한다고 생각했습니다.

android:inputType="textMultiLine"

그런 다음보기를 클릭 할 수 없게됩니다. 클릭에 반응해야하는 슬라이드 드로어 메뉴에서 여러 줄의 텍스트 뷰를 얻으려고했습니다.

android:singleLine="false"일을 잘하지만.


3
Android 자체의 보푸라기 오류로 인해 TextView가 아닌 ​​EditText에만이 속성을 사용하는 것이 좋습니다.
Jared

1
textMultiline을 참조하고 있습니까? 나는 그것을 사용 하지 말라고 말했다 . textViews : singleLine은 괜찮습니다 : developer.android.com/reference/android/widget/…
Ryan

3
android : singleLine은 더 이상 사용되지 않습니다
Humberto Castañeda

확실합니까? 위의 주석에서 링크 한 문서에서 res docs에 표시된 것처럼 보였지만 언급하지 않았습니다. 그들이 TextView 페이지에서 언급하지 않는 것이 이상합니다. 문제는 그들이 제안한 해결 방법 (여러 줄)이 OP에 넣을 때 클릭 할 수있는보기를 중지한다는 것입니다. developer.android.com/reference/android/R.attr.html#singleLine
Ryan

3
android : singleLine = "false"는 기본값이므로 더 이상 사용되지 않습니다
Ashraf Alshahawy

28

나는 어느 대답도 좋아하지 않는다. inputType을 설정하면 TextView가 내용에 맞게 조정됩니다.

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"/>

Nexus One (2.3) 및 Nexus 4 (4.4)에서 테스트


52
안드로이드 : inputType는 = "textMultiLine는"텍스트 뷰 아니, 그 글고과이 일을하려고하면 당신은 경고를 얻을
bhaskarc

2
경고를 들어야합니다. @Ryans 솔루션을 사용하십시오.
m02ph3u5

15

텍스트 안에 '\ n'을 넣으면 추가 속성이 필요하지 않습니다. :)

          <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Pigeon\nControl\nServices"
            android:id="@+id/textView5"
            android:layout_gravity="center"
            android:paddingLeft="12dp"/> 

6
이 솔루션은 텍스트를 동적으로 설정하는 데 사용할 수 없습니다
Sagar Devanga

@SagarDevanga 텍스트를 동적으로 설정한다는 것은 무슨 뜻입니까?
juil

3
@SagarDevanga, 방금 확인했습니다. 동적 및 정적 텍스트는 기본적으로 여러 줄로 표시 \n되어 있으므로 (있는 경우 ) 올바른 솔루션입니다. 아니 singleLine=false, 아니 lines=4등등.
CoolMind

10

ScrollView에 텍스트보기를 추가하십시오.

<ScrollView
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:layout_marginLeft="15dp"
           android:layout_marginRight="15dp"
           android:layout_marginTop="20dp"
           android:fillViewport="true">

           <TextView
               android:id="@+id/txtquestion"
               android:layout_width="fill_parent"
               android:layout_height="match_parent"
               android:background="@drawable/abs__dialog_full_holo_light"
               android:lines="20"
               android:scrollHorizontally="false"
               android:scrollbars="vertical"
               android:textSize="15sp" />

       </ScrollView>

5

텍스트보기에서 줄 수를 강제로 지정하는 솔루션이 마음에 들지 않습니다. 오히려 여기에 제안 된 솔루션을 통해 해결하는 것이 좋습니다 . 알다시피 OP는 테이블에서 텍스트보기를 적절하게 보이게 만드는 데 어려움을 겪고 있으며 shrinkColumns원하는 것을 달성하기 위해 전달 해야하는 올바른 지시어입니다.


5

클릭 할 수없고 초점을 맞출 수 없도록하여 EditText로 작업 해보십시오. 또한 스크롤 막대를 표시하고 EditText의 언더 바를 삭제할 수 있습니다.
예를 들면 다음과 같습니다.

<EditText
android:id="@+id/my_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_parent"
android:inputType="textMultiLine"                   <!-- multiline -->
android:clickable="false"                         <!-- unclickable -->
android:focusable="false"                         <!-- unfocusable -->
android:scrollbars="vertical"     <!-- enable scrolling vertically -->
android:background="@android:color/transparent"   <!-- hide the underbar of EditText -->
/>  

도움이 되었기를 바랍니다 :)


3

먼저 동등한 "\n"것으로 Html바꾸고 문자열 "&lt;br&gt;" 을 호출 Html.fromHtml()하십시오. 아래 단계를 수행하십시오.

String text= model.getMessageBody().toString().replace("\n", "&lt;br&gt;")
textView.setText(Html.fromHtml(Html.fromHtml(text).toString()))

이것은 완벽하게 작동합니다.


2

내가 배운 것은 다음 줄에 제동하려는 단어 사이에 "\ n"을 추가하는 것입니다. 예를 들어 ...

<TextView
    android:id="@+id/time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:text="M-F 9am-5pm \n By Appointment Only" />

오후 5 시부 터 By까지는 다음 줄을 시작하고 끝내려는 위치를 더 잘 제어 할 수있었습니다.


2

여러 줄로 된 TextView에 가장 적합한 답변은 다음과 같습니다.

android:inputType="textMultiLine"

8
아닌가 android:inputType에 대한 속성을 <EditText>하지 않는 <TextView>?
timtim

이 속성을 TextView에 추가하면 경고가 나타납니다. -속성이 지정된 android : inputType = "textMultiLine"은 <TextView>와 함께 사용하면 안됩니다. 실제로이 속성은 EditText에 대한 것입니다.
Yhondri

2

android : inputType = "textMultiLine"을 사용할 수 있습니다

  <TextView android:id="@+id/address1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:gravity="left"
    android:maxLines="4" 
    android:inputType="textMultiLine"
    android:text="Johar Mor, Gulistan-e-Johar, Karachi" />

1
이것은 경고로 표시됩니다. 아니 텍스트 뷰에 사용되는 의미
스텔스 랍비에게

1
inputType은 EditText 구성 요소 만 지원합니다.
Chamin Wickramarathna

1

나는 사용했다 :

TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table);
tablelayout.setColumnShrinkable(1,true);

그것은 나를 위해 일했다. 1은 열 수입니다.


0
You can do this with TableRow, see below code

<TableRow >
    <TextView
        android:id="@+id/tv_description_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:padding="8dp"
        android:text="@string/rating_review"
        android:textColor="@color/black"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4"`enter code here`
        android:padding="8dp"
        android:text="The food test was very good."
        android:textColor="@color/black"
        android:textColorHint="@color/hint_text_color" />
</TableRow>

0

가장 간단한 방법

<TableRow>
    <TextView android:id="@+id/address1"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:gravity="left"
        android:maxLines="4" 
        android:singleLine="false"              
        android:text="Johar Mor,\n Gulistan-e-Johar,\n Karachi" >
    </TextView> 
</TableRow>

\n새 줄을 삽입하려는 곳에 사용하십시오 .


0

열쇠와 텍스트 뷰입니다 singleline=false(예되지 않습니다,하지만 작업에 있어야합니다한다)와 결합 lines, maxlines또는minlines

<TextView
                android:id="@+id/txtBowlers"
                style="@style/Default_TextBox.Small"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="4dp"
                android:singleLine="false"
                android:maxLines="6"
                android:text="Bob\nSally\nJohn"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintHorizontal_bias="0.0"
                app:layout_constraintStart_toStartOf="@+id/txtTeamName"
                app:layout_constraintTop_toBottomOf="@+id/txtTeamName"/>

-1

레이아웃 파일에 긴 줄을 쓰는 대신 문자열을 선언하지 않겠습니까? 이를 위해 레이아웃 파일 'android : text = "@ string / text"'에 코드 줄을 선언하고 \\ app \ src \ main \ res \ values ​​\ strings.xml로 이동하여 코드 줄을 추가해야합니다. '여러 줄의 텍스트가 여기에 있습니다.'또한 '\ n'을 사용하여 줄을 끊으십시오. 그렇지 않으면 줄이 자동으로 조정됩니다.


-4

나를 위해 해결책 중 하나가 작동하지 않았습니다. 이 질문에 대한 완전한 답은 아니지만 때로는 도움이 될 수 있음을 알고 있습니다.

세로 선형 레이아웃에 4 개의 텍스트 뷰를 넣습니다.

<Linearlayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation:"vertical"

    ...>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line1"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line2"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line3"
       .../>
    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text:"line4"
       .../>
</LinearLayout>

이 솔루션은 텍스트보기 텍스트가 레이블처럼 일정한 경우에 좋습니다.


1
이러지 마십시오.
humble_wolf

-23

TextView는 한 줄에 들어갈 공간이 충분하지 않고 singLine이 true로 설정되지 않은 경우 여러 줄이됩니다.

한 줄에 공백이 있으면 여러 줄이 아닙니다.


7
고정 너비 대신 fill_parent를 사용하려면 어떻게해야합니까? 그렇게하면 내 내용이 잘립니다 ...
happyhardik

6
나는 시도 android:singleLine="false"하거나 android:inputType="textMultiLine"(Marageus가 묘사 한대로) android:inputType="textMultiLine"둘 다 존재할 때 우선권을 갖는 통지
Romantic Electron

의견을 말한 다른 사람들의 견해를 공유하면, 이것은 완전히 잘못되었으며 이것이 왜 받아 들여지는 답인지에 대해 어리 석습니다.
Aleks G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.