2010-11-23 5 views
2

私のアプリはテキストが重いとは言わないが、他のものよりも長いランダムな文字列を表示することがある。彼らは私のドロイド2にうまく収まるが、小さいドロイドに同じものを表示しないことは分かっている。誰もがすべてのアンドロイドで動作するように異なるサイズのテキストをフォーマットする適切な方法を知っていますか?テキスト形式にdip、dp、sip、またはspを使用する必要がありますか?

+1

作業を定義します。それはすべてのドロイドで動作します。どのように表示するかによって異なります。 – Falmarri

答えて

6

をellipsize:どちらもそれらの

<TextView ... android:textAppearance="?android:attr/textAppearanceMedium" /> 
<TextView ... android:textAppearance="?android:attr/textAppearanceLarge" /> 
<TextView ... android:textAppearance="?android:attr/textAppearanceSmall" /> 

デフォルトですが、デフォルト:

<TextView ... android:textAppearance="?android:attr/textAppearance" /> 

これは確かにTextViewだけでなく、他のビューにも適用できます。

3

テキストサイズの場合はspを使用することをおすすめします。使用するレイアウトは動作する必要があります。レイアウトのスケーリングが可能な限りすべてのサイズで可能です(異なるサイズの画面にはレイアウトが必要な場合があります)。テキストが収まらない場合があり、それを包むか、あなたはちょうどあなたは、Androidが提供するデフォルトのスタイルを使用して選ぶべきいくつかのテキストを大きくしたり小さくしたりしたい場合は、それ

0

SPとDPはあなたが期待するように動作していないようです。 DPは「表示に依存しません」とされ、SPは同じものとして記述されます。スケーリングすることができます(恐らく "ズーム"コマンドによって)。 しかし、期待通りに機能しません。

たとえば、320x480の電話機とNexusの2つのデバイスがあります。これは800x1280ですが、それはsw600として記述されています(私には理由が分かりません)。 何が起きているのかを見るために、私はビューにテキストビューを追加しました。これは60 'X'文字で構成されています(モノスペースのものと同じに見えるため選択されています)。

textView textSizeは10dpに設定されており、そのうち60個がNexusの画面を完全に占めています。 しかし、電話機ではまったく同じサイズで表示され、ほぼ2行になります。

したがって、DPは表示に依存しないように見えます。各文字が最大で与えられる画素の(近似)数を記述するだけである。 SPでディメンションを定義しても違いはありません。

これはあまり有用ではありません。何らかのスケーリングが適用されることを期待していたので、携帯電話で適切なサイズを選択することができました.Nexusのためにスケーリングされます。

例えば、私のテキスト行の長さが約30文字で、画面全体に行全体を塗りたい場合は、それを10dpと定義します。各dpは1ピクセル(およそ)です。それから、Nexusで描画されたとき、各dpは2ピクセルになり、サイズの2倍に見えます。

これはどのように動作するのか、私が知る限りはそうです。それはかなり無駄になります。

私の唯一の解決策、それが唯一のdimens.xmlファイルから寸法を使用すると、それらの6、共通の幅(ごとに1つを持っている、エレガントなものではありません240,320,480,600,720,800 - 高いものを並べ替えることができますNexusに適合するようにコードを設計し、私が作成したスプレッドシートを使用して、共通の幅のdimens.xmlの値を拡大/縮小します。 これは痛みです。それは動作します。

私が間違って使用していない限り、Androidシステムはちょうど壊れています。

関連する問題