画面の左側にあるTextViewがあり、gravity = "right"で設定され、SingleLine = "true"で設定されています。
万が一このビューのテキストが長くなりすぎた場合は、ビューの左側からテキストを単純に削除する必要があります。以下の設定でそれができると思いましたが、実際に起こるのは、おそらく長い文字列が完全に消え、おそらくどこかでビューの外にあることです。
1行のテキストを含むシンプルなテキストビューを作成して、予期しないことが発生した場合でもレイアウトを維持するにはどうすればよいですか? ...または予測可能なものです。
<TextView
Android:id="@+id/tempF"
Android:text="@string/tempF"
Android:layout_width="146dp"
Android:layout_height="wrap_content"
Android:textColor="#cccccc"
Android:textStyle="bold"
Android:textSize="92dp"
Android:fontFamily="serif"
Android:gravity="right"
Android:layout_marginTop="60dp"
Android:layout_gravity="top|left"
Android:singleLine="true"
/>
これが「省略」の目的です-追加のテキストを示すためにテキストの一部を切り捨てます。
あなたの場合、あなたは次のようなものを追加する必要があるかもしれません:
Android:ellipsize="end"
またはさらに深くする必要があるかもしれません:
またはこれを見てください:
クラスを拡張する背後にある考え方は、テキストコンテンツが提供されたスペースを超えたときのTextViewの動作をカスタマイズできるということです。たとえば、パディングなどを削除することで、「ブリードオーバー」の外観を与えることができます。 :
これは本当に長いです...
(3つのピリオドは省略記号です-テキストは逆方向になりますが、それでも機能するはずです)
カスタムTextViewを使用すると、「...」を何もまたは他の任意のものに変更できます(私が行った画像も)。
テキストをマーキーにすることもできます。
Xmlに2つのプロパティを追加します
Android:singleLine="true"
Android:ellipsize="end"
以下のTextView.Checkのellipsize属性で遊ぶ必要があります。
<TextView
Android:id="@+id/tempF"
Android:text="@string/tempF"
Android:layout_width="146dp"
Android:layout_height="wrap_content"
Android:textColor="#cccccc"
Android:textStyle="bold"
Android:textSize="92dp"
Android:fontFamily="serif"
Android:gravity="right"
Android:layout_marginTop="60dp"
Android:layout_gravity="top|left"
Android:singleLine="true"
Android:ellipsize="end"
/>
<TextView
Android:id="@+id/tv_desc"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="@color/colorGray"
Android:textSize="@dimen/_18dp"
Android:padding="@dimen/_2dp"
Android:singleLine="true"
Android:ellipsize="end"
Android:text="@string/desc"/>
<View
Android:layout_width="match_parent"
Android:layout_height="1dp"
Android:background="#000000" />
できます。