368

TextView文字数を制限したい があります。実際、私はこれを行うことができますが、私が探しているのは、文字列の最後に 3 つのドット (...) を追加する方法です。これは、テキストが継続していることを示しています。これは私の XML ですが、テキストを制限していますが、ドットはありません。

<TextView 
        android:id                      = "@+id/tvFixture"
        android:layout_width            = "wrap_content"
        android:layout_height           = "wrap_content"
        android:layout_toLeftOf         = "@id/ivFixture_Guest"
        android:text                    = "@string/test_06"
        android:lines                   = "1"
        android:ems                     = "3"
        android:gravity                 = "right"
        style                           = "@style/simpletopic.black" 
        android:ellipsize="end"/>
4

24 に答える 24

800

非推奨:

android:singleLine="true"Textviewにもう 1 つのプロパティを追加します

更新しました:

android:ellipsize="end" 
android:maxLines="1"
于 2012-05-25T05:19:05.667 に答える
179

TextView以下は、a を強制的に 1 行にするためのさまざまなオプション (3 つのドットの有無にかかわらず) をいじって学んだことです。

ここに画像の説明を入力

アンドロイド:maxLines="1"

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:text="one two three four five six seven eight nine ten" />

これは、テキストを 1 行に強制するだけです。余分なテキストは非表示になります。

関連している:

ellipsize="終わり"

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:ellipsize="end"
    android:text="one two three four five six seven eight nine ten" />

これにより、収まらないテキストが切り取られますが、省略記号 (3 つのドット) を追加することでテキストが切り捨てられたことをユーザーに知らせます。

関連している:

ellipsize="マーキー"

<TextView
    android:id="@+id/MarqueeText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:text="one two three four five six seven eight nine ten" />

これにより、テキストが TextView 全体で自動的にスクロールされます。コードで設定する必要がある場合があることに注意してください。

textView.setSelected(true);

おそらくandroid:maxLines="1"android:singleLine="true"基本的に同じことを行う必要があり、singleLine は明らかに非推奨であるため、使用しないことをお勧めしますが、それを取り出すと、マーキーはもうスクロールしません。ただし、テイクアウトmaxLinesしても影響はありません。

関連している:

scrollHorizo​​ntally を使用した Horizo​​ntalScrollView

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/horizontalScrollView">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:scrollHorizontally="true"
        android:text="one two three four five six seven eight nine ten" />
</HorizontalScrollView>

これにより、ユーザーは手動でスクロールしてテキスト行全体を表示できます。

于 2015-05-04T12:05:19.270 に答える
87

レイアウト ファイルで TextView のこのプロパティを試してください。

android:ellipsize="end"
android:maxLines="1"
于 2012-05-25T05:20:16.010 に答える
32

幅を1行に制限し、文字で制限したくないと思いますか? singleLineは推奨されていないため、次のものを一緒に使用してみてください。

android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
于 2012-11-06T10:46:55.253 に答える
15

例えば。あなたが使用することができます

android:maxLength="13"

これにより、texviewの長さが13に制限されますが、3つのドット(...)を追加しようとすると、textviewの長さの一部になるため、表示されないという問題があります。

     String userName;
     if (data.length() >= 13) {
            userName = data.substring(0, 13)+ "...";

     } else {

            userName = data;

    }
        textView.setText(userName);

これとは別に、使用する必要があります

 android:maxLines="1"
于 2013-05-16T06:24:42.810 に答える
4

を使用して目的の結果を得ました

android:maxLines="2"
android:minLines="2"
android:ellipsize="end"

トリックは、maxLines と minLines を同じ値に設定することです... Android:lines = "2" だけでなく、トリックを実行しません。また、非推奨の属性を回避しています。

于 2015-02-17T15:12:39.243 に答える
4

テキストビューの文字数を制限し、テキストの後に (...) を追加できます。5 文字だけを表示する必要があり、その後 (...) を表示する必要があるとします。次の操作を行うだけです。

String YourString = "abcdefghijk";

if(YourString.length()>5){

YourString  =  YourString.substring(0,4)+"...";

your_text_view.setText(YourString);
}else{

 your_text_view.setText(YourString); //Dont do any change

}

少しハック^_^。それは良い解決策ではありませんが。しかし、私のために働いた回避策:D

編集: あなたの限られた番号に従って、少ない文字のチェックを追加しました。文字の。

于 2014-01-15T11:45:49.057 に答える
3

テキストビューの高さと幅を修正すると思います。その後、ソリューションが機能します。

于 2012-05-25T05:21:49.053 に答える
3

この行をxmlに記述して、次のものを取得できますtextview

android:singleLine="true"
于 2012-05-25T05:22:02.747 に答える
2

テキストが長すぎる場合にテキストの最後に「...」を追加する手順:

  1. テキスト幅が一定であることを確認する
  2. これらの2行を追加します android:ellipsize="end" android:maxLines="1"

制約レイアウトの textview の完全なコード:

<TextView
        android:layout_width="75dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="1"
        android:textSize="15sp"
        android:textAllCaps="false"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="parent" />
于 2021-08-28T08:51:16.640 に答える
1

これらの 2 行をテキストに追加します

android:ellipsize="end"
android:singleLine="true"
于 2016-11-07T10:11:35.850 に答える
-1

あなたはただ変わるだけです...

android:layout_width="wrap_content"

この下の行を使用してください

android:layout_width="match_parent"

.......

   <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:layout_marginLeft="10dp"
       android:layout_marginTop="10dp"
       android:layout_toRightOf="@+id/visitBox"
       android:orientation="vertical" >

             <TextView
                  android:id="@+id/txvrequestTitle"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:singleLine="true"
                  android:text="Abcdefghighiklmnon"
                  android:textAppearance="? 
                  android:attr/textAppearanceLarge"
                  android:textColor="@color/orange_color" />

   </LinearLayout>
于 2014-10-15T13:53:05.077 に答える