このプロパティ は
「短くて非常に長い単語」
に
「短い」
。しかし、私はちょっとしたいです。お気に入り
「短くて非常に長い...」
現在、文字列をJavaコードで切り捨てています。ただし、リンクの実際の長さではなく文字数に基づいています。したがって、結果はあまり良くありません。
String title;
if(model.getOrganization().length() > 19) {
title = model.getText().substring(0, 15).trim() + "…";
} else {
title = model.getText();
}
((TextView) findViewById(R.id.TextViewTitle)).setText(title);
更新
気づいたように、このプロパティは実際にはいくつかのケースで「...」を追加します。しかし、それらのすべてではありません:
12345678901234567890は「12345678901234 ...」になります
しかしながら、
「1234567890 1234567890」は「1234567890」になり、「1234567890 123 ...」にはなりません
更新2
今では本当にファンキーになります! singleLine = trueを設定し、maxLineを削除しました(ellipsize属性の設定の有無にかかわらずバグが表示されます)...
これはAndroid 2.1 update 1のMotorola Milestoneからのスクリーンショットです。同じAndroidバージョンのHTC Desireでも同じことが起こります
アップデート3
ここで、Android:ellipsize = "Marquee"を使用します。それが適切に機能する唯一の設定のようです。また、焦点を合わせたときのみ動きます。他の多くのアプリでも見られます。私はその一般的な慣習を推測します。
アップデート3を参照してください。回避策は「Marquee」を使用していました。現時点では、多くのアプリがこれを実行しています。現在、Androidの新しいバージョンでは、この機能はおそらく修正されており、期待どおりに動作します。(推測)
1行の場合は、これを試してください。
Android:ellipsize="end"
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:singleLine="true"
それは私のために働いた。
私は同様の問題があり、このプロパティをTextViewに設定すると役立ちました:
Android:singleLine="true"
また、RelativeLayoutを使用していたため、TextViewの右側にあるボタンに左マージンを設定して、TextViewが使用できるスペースを制限しました。これにより、テキストはそれ以上拡張できず、コンテンツの切り捨てが強制されます。
たぶんそれはあなたの問題の解決策ではないかもしれませんが、同じような状況で私を助けてくれました。
OSで使用される private Ellipsizer class がどのように機能するかを見て、アプリ用に変更できますか?
編集:ここに作業リンクがあります- http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/Java/Android/text/Layout.Java#18