web-dev-qa-db-ja.com

Android、TextViewの幅を制限する方法(およびテキストの最後に3つのドットを追加する方法)?

文字数を制限したい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"/>
262
Hesam

非推奨:

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

更新:

Android:ellipsize="end" 
Android:maxLines="1"
572
Azhar Shaikh

以下は、TextViewを1行にするためのさまざまなオプション(3つのドットがある場合とない場合)を試してみることによって学んだことです。

enter image description here

Android: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行に強制するだけです。余分なテキストは隠されています。

関連する

省略記号= "終了"

<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 = "Marquee"

<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>

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

141
Suragch

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

Android:ellipsize="end"
Android:maxLines="1"
78
Niranj Patel

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

Android:maxLines="1"
Android:scrollHorizontally="true"
Android:ellipsize="end"
30
Muz

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

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"
11
Nayanesh Gupte

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

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

トリックはmaxLinesとminLinesを同じ値に設定しています... and Android:lines = "2"ではなく、トリックをしてはいけません。また、廃止予定の属性は避けてください。

5
user1974433

コード:

TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);

xml:

Android:maxLines = "5"

例えば.

マタイによる福音書第13章では、弟子たちはイエスに、なぜ寓話の中で群衆と話をしたのかを尋ねました。彼は答えました、「天の国の謎を知ることはあなたに与えられましたが、彼らには与えられていません。

アウトプット:マタイによる福音書第13章で、弟子たちはなぜイエスがたとえ話で群衆と話をしたのかを尋ねました。彼は答えた、「知ってもらうためにあなたに与えられた….

4
ruin3936

Horizo​​nal Recyclerviewを使用しています。
1)CardViewでは、使用時にTextViewが垂直方向に歪む

Android:ellipsize="end"
Android:maxLines="1"

大胆なTextViews Wyman Group、Jaskolskiをチェックしてください... enter image description here

2)しかし、私がsingleLineを省略記号と一緒に使用した場合 -

Android:ellipsize="end"
Android:singleLine="true"

大胆なTextViews Wyman Group、Jaskolskiをチェックしてください... enter image description here

第二の解決策は私のためにきちんと働きました(singleLineを使って)。また、私はOSのバージョンでテストしました:4.1以上(8.0まで)、それはどんなクラッシュもなしでうまく働きます。

4
Varad Mondkar

あなたのテキストビューの文字数を制限し、テキストの後に(...)を追加することができます。あなたが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

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

4
TheLittleNaruto

Android:ellipsize 属性を使用するには、TextView レイアウト幅 に制限する必要があります。 textは、TextViewからみて範囲外です。

だから、 Android:layout_width attributeがここで重要な役割を果たします。それに応じて設定してください。

1つのexampleは次のようになります。

<TextView        
    Android:layout_width="120dp"
    Android:layout_height="wrap_content"
    Android:ellipsize="end"
    Android:text="This is a very long text to be displayed"
    Android:textSize="12sp"
    Android:maxLines="1"            
     />

さて、ここでtextin Android:text = "これは表示される非常に長いテキストです" Androidを使ってTextViewから見えなくなります。 layout_width = "120dp" Android:ellipsize = "end" textを切り捨てて ...(3ドット) その後。すなわち、これは非常に長い...はTextViewに表示されます。

3
Androwed

テキストビューのレイアウトに次の行を追加する必要があります。

Android:maxLines="1"
Android:ellipsize="end"
Android:singleLine="true"

これがあなたのために働くことを願っています。

3

テキストビューの高さと幅を固定したと思います。それからあなたの解決策はうまくいくでしょう。

2

この行はxmlで書くことができます。ここにtextviewを取ります。

Android:singleLine="true"
2
Jay Thakkar

@AzharShaikhのアプローチはうまくいきます。

Android:ellipsize="end"
Android:maxLines="1"

しかし、私はTextViewがWordによって切り捨てられるという問題を理解しています(デフォルト)。次のようなテキストがあるかどうかを示します。

テストlong_line_without_any_space_abcdefgh

textViewは表示するでしょう:

テスト...

そして、私はこの問題に対処するための解決策を見つけました、スペースをunicodeのノーブレークスペース文字で置き換えてください、それはTextViewを単語の代わりに文字でラップさせます:

yourString.replace(" ", "\u00A0");

結果:

テストlong_line_without_any_space_abc ...

つかいます

  • Android:singleLine="true"
  • Android:maxLines="1"
  • app:layout_constrainedWidth="true"

私のTextViewの全容は次のようになります。

    <TextView
    Android:id="@+id/message_title"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_marginStart="5dp"
    Android:maxLines="1"
    Android:singleLine="true"
    Android:text="NAME PLACEHOLDER MORE Text"
    Android:textColor="@Android:color/black"
    Android:textSize="16sp"

    Android:textStyle="bold"
    app:layout_constrainedWidth="true"
    app:layout_constraintEnd_toStartOf="@id/message_check_sign"
    app:layout_constraintHorizontal_bias="0"
    app:layout_constraintStart_toEndOf="@id/img_chat_contact"
    app:layout_constraintTop_toTopOf="@id/img_chat_contact" />

Picture of <code>TextView</code>

1
kyrylo_23
        <TextView
            Android:id="@+id/product_description"
            Android:layout_width="165dp"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="2dp"
            Android:paddingLeft="12dp"
            Android:paddingRight="12dp"
            Android:text="Pack of 4 summer printed pajama"
            Android:textColor="#d2131c"
            Android:textSize="12sp"
            Android:maxLines="2"
            Android:ellipsize="end"/>
1

あなたのテキストにこの2行を追加する

Android:ellipsize="end"
Android:singleLine="true"
1
SANJAY GUPTA

あなたはそれをxmlによって行うことができます:

<TextView 
    Android:id="@+id/textview"
    Android:maxLines="1" // or any number of lines you want
    Android:ellipsize="end"
    />
0
Khalid Taha

あなただけが変わる

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>
0
KeTaN