文字数を制限したい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"/>
非推奨:
Textviewにもう1つのプロパティAndroid:singleLine="true"
を追加します。
更新:
Android:ellipsize="end"
Android:maxLines="1"
以下は、TextView
を1行にするためのさまざまなオプション(3つのドットがある場合とない場合)を試してみることによって学んだことです。
<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つのドット)を追加することによってテキストが切り捨てられたことをユーザーに知らせます。
関連する
<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
を削除しても影響はありません。
関連する
<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>
これにより、ユーザーは手動でスクロールしてテキスト全体を見ることができます。
レイアウトファイルでTextViewのこのプロパティを試してください。
Android:ellipsize="end"
Android:maxLines="1"
私はあなたが幅を1行に制限し、文字で制限したくないと思いますか? singleLine
は非推奨なので、次のものを一緒に使用してみてください。
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:ellipsize="end"
例えば。あなたが使用することができます
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"
を使用して目的の結果を得ました
Android:maxLines="2"
Android:minLines="2"
Android:ellipsize="end"
トリックはmaxLinesとminLinesを同じ値に設定しています... and Android:lines = "2"ではなく、トリックをしてはいけません。また、廃止予定の属性は避けてください。
コード:
TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
xml:
Android:maxLines = "5"
例えば.
マタイによる福音書第13章では、弟子たちはイエスに、なぜ寓話の中で群衆と話をしたのかを尋ねました。彼は答えました、「天の国の謎を知ることはあなたに与えられましたが、彼らには与えられていません。
アウトプット:マタイによる福音書第13章で、弟子たちはなぜイエスがたとえ話で群衆と話をしたのかを尋ねました。彼は答えた、「知ってもらうためにあなたに与えられた….
Horizonal Recyclerviewを使用しています。
1)CardViewでは、使用時にTextViewが垂直方向に歪む
Android:ellipsize="end"
Android:maxLines="1"
大胆なTextViews Wyman Group、Jaskolskiをチェックしてください...
2)しかし、私がsingleLineを省略記号と一緒に使用した場合 -
Android:ellipsize="end"
Android:singleLine="true"
大胆なTextViews Wyman Group、Jaskolskiをチェックしてください...
第二の解決策は私のためにきちんと働きました(singleLineを使って)。また、私はOSのバージョンでテストしました:4.1以上(8.0まで)、それはどんなクラッシュもなしでうまく働きます。
あなたのテキストビューの文字数を制限し、テキストの後に(...)を追加することができます。あなたが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
編集:私はあなたの限られた数に従って少ない文字数のチェックを追加しました。文字の。
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に表示されます。
テキストビューのレイアウトに次の行を追加する必要があります。
Android:maxLines="1"
Android:ellipsize="end"
Android:singleLine="true"
これがあなたのために働くことを願っています。
テキストビューの高さと幅を固定したと思います。それからあなたの解決策はうまくいくでしょう。
この行はxmlで書くことができます。ここにtextview
を取ります。
Android:singleLine="true"
@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" />
<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"/>
あなたのテキストにこの2行を追加する
Android:ellipsize="end"
Android:singleLine="true"
あなたはそれをxml
によって行うことができます:
<TextView
Android:id="@+id/textview"
Android:maxLines="1" // or any number of lines you want
Android:ellipsize="end"
/>
あなただけが変わる
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>