私のアプリはテキストが重いとは言わないが、他のものよりも長いランダムな文字列を表示することがある。彼らは私のドロイド2にうまく収まるが、小さいドロイドに同じものを表示しないことは分かっている。誰もがすべてのアンドロイドで動作するように異なるサイズのテキストをフォーマットする適切な方法を知っていますか?テキスト形式にdip、dp、sip、またはspを使用する必要がありますか?
答えて
を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
だけでなく、他のビューにも適用できます。
テキストサイズの場合はspを使用することをおすすめします。使用するレイアウトは動作する必要があります。レイアウトのスケーリングが可能な限りすべてのサイズで可能です(異なるサイズの画面にはレイアウトが必要な場合があります)。テキストが収まらない場合があり、それを包むか、あなたはちょうどあなたは、Androidが提供するデフォルトのスタイルを使用して選ぶべきいくつかのテキストを大きくしたり小さくしたりしたい場合は、それ
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システムはちょうど壊れています。
- 1. vbaで一般的な形式からテキスト形式に変換する必要があります
- 2. LibGDXでのDIP/DPの使用方法
- 3. 10進数の形式にする必要があります。
- 4. 日付形式(YYYYMMDD)の形式を変更する必要があります
- 5. dpはdipと同じですか?
- 6. a2billing sipが間違った形式を招待しますか?
- 7. アプリケーションにAsyncTaskまたはIntentServiceを使用する必要がありますか?
- 8. テキストの書式設定時に余白やパディングを使用する必要がありますか?
- 9. iOSはNSMutableArrayまたはNSMutableDictionaryを使用する必要がありますか?
- 10. 私はurandomまたはopenssl_random_pseudo_bytesを使用する必要がありますか?
- 11. ソフトウェアプロジェクトで正式な方法を使用する必要がありますか?
- 12. 私はsingletableviewを使用する必要がありますか?
- 13. はcaptchaを使用する必要がありますか?
- 14. 私はフォームタグを使用する必要がありますか?
- 15. C++形式の入力は値と一致する必要があります
- 16. @synthesizeをまだ使用する必要がありますか?
- 17. NSCoderバイナリファイル形式にはどのようなファイル拡張子を適用する必要がありますか?
- 18. オンラインゲームにTCPを使用する必要がありますか?
- 19. MVVMにDataTemplatesを使用する必要がありますか?
- 20. ページレイアウトにapplication.html.erbを使用する必要がありますか?
- 21. ctagsにバージョンコントロールを使用する必要がありますか?
- 22. javascriptで表形式のデータをExcel(xlsx)形式にエクスポートする必要があります
- 23. AppDomain.CurrentDomain.BaseDirectoryまたはSystem.Environment.CurrentDirectoryを使用する必要がありますか?
- 24. Cloudantでセレクタまたはビューを使用する必要がありますか?
- 25. JavaScriptでwindow.navigateまたはdocument.locationを使用する必要がありますか?
- 26. データセットまたはデータテーブルを使用する必要がありますか?
- 27. ビューでディスパッチイベントまたはファイアイベントを使用する必要がありますか?
- 28. JComboBoxでEnumまたはStringを使用する必要がありますか?
- 29. Developer EntityまたはUser Entityを使用する必要がありますか?
- 30. マルチテーブルまたはマルチテーブルを使用する必要がありますか?
作業を定義します。それはすべてのドロイドで動作します。どのように表示するかによって異なります。 – Falmarri