[android] Android의 TextView에서 텍스트를 감싸는 방법

누구든지 Android 플랫폼의 TextView에서 텍스트를 래핑하는 방법을 알고 있습니까? 즉, textview의 텍스트가 화면 길이를 초과하면 두 번째 줄에 표시되어야합니다.

다음을 검색하고 시도했습니다.

android:scrollHorizontally="false",
android:inputType="textMultiLine",
android:singleLine="false"

하지만 작동하지 않습니다 ..

누구든지 내가 어떻게 할 수 있는지 제안 할 수 있습니까?



답변

나 에게이 문제는 Android <4.0에서만 발생했습니다.

내가 사용한 매개 변수의 조합은 다음과 같습니다.

android:layout_weight="1"
android:ellipsize="none"
android:maxLines="100"
android:scrollHorizontally="false"

maxLines 수는 내 TextView 랩핑을 만든 무작위 최종 조각 인 것 같습니다.


답변

제약 레이아웃

<TextView
android:id="@+id/some_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"

app:layout_constraintLeft_toLeftOf="@id/textview_above"
app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
  • 레이아웃 너비가 0인지 확인
  • 왼쪽 / 오른쪽 제약이 정의 됨
  • wrap_content의 레이아웃 높이는 확장을 위 / 아래로 허용합니다.
  • android:maxLines="2"수직 확장을 방지하도록 설정 (2는 예)
  • 타원은 확률이 높습니다. 최대 라인에 대한 좋은 아이디어android:ellipsize="end"

0dp 너비는 왼쪽 / 오른쪽 제약으로 위젯의 너비를 결정합니다.

왼쪽 / 오른쪽 제약 조건을 설정하면 텍스트가 줄 바꿈되는 위젯의 실제 너비가 설정됩니다.

제약 레이아웃 문서


답변

(가)의 경우를 들어 TextView내부에 TableLayout상기 용액을 설정하는 android:shrinkColumns="1"TableLayout. ( 1랩핑하려는 TextView가있는 열 번호로 바꿉니다 . (0- 인덱싱))

AFAICT, 다른 속성은 TextView.

다른 경우는 여기에서 다른 답변을 참조하십시오.

FWIW, 처음에는

 <TextView
   android:id="@+id/inventory_text"
   android:layout_width="fill_parent"
   android:layout_weight="1"
   android:width="0dp"

하지만 그 결과 대화 상자 하단에 추가 빈 공간이 생겼습니다.


답변

2 개의 매개 변수를 사용해야합니다.

  • android:ellipsize="none" : 텍스트가 textview 너비에서 잘리지 않습니다.

  • android:scrollHorizontally="false" 텍스트는 필요한만큼 줄 바꿈합니다.


답변

사용 app:breakStrategy="simple"에서 AppCompatTextView이 단락 레이아웃을 제어합니다.

세 개의 상수 값이 있습니다.

  • 균형이 잡힌
  • 고품질
  • 단순한

TextView xml에서 디자인

<android.support.v7.widget.AppCompatTextView
        android:id="@+id/textquestion"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:scrollHorizontally="false"
        android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...."
        android:textColor="@android:color/black"
        android:textSize="20sp"
        android:textStyle="bold"
        app:breakStrategy="simple" />

현재 최소 API 레벨이 23 이상이면 코딩에서

yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);

자세한 내용은이 BreakStrategy를 참조 하세요.

Textview breakStrategy 이미지


답변

이렇게하면 문제가 해결 android:layout_weight="1"됩니다..


답변

OK 여러분, 진실은 중간 어딘가에 있기 때문에 부모의 관점과 자녀의 관점에서 문제를 봐야합니다. 아래 솔루션은 스피너 모드 = dialogAndroid 버전에 관계없이 작동하는 경우에만 작동합니다 (문제 없음 .. Android에서 VD 및 DesireS => 2.2로 테스트).

  1. . 스피너의 (부모) 모드를 다음과 같이 설정하십시오.

    android:spinnerMode="dialog"
    
  2. textview의 (자식 사용자 정의보기) 속성을 다음과 같이 설정합니다.

    android:layout_weight="1"
    android:ellipsize="none"
    android:maxLines="100"
    android:scrollHorizontally="false"
    

나는 이것이 당신에게도 효과가 있기를 바랍니다.