アンドロイドでビューを定義するときは、余白やサイズなどにdpを使用しますが、テキストサイズにはspを使用します。 spはdpと同じですが、テキストの場合は同じです。なぜ私たちはすべてのためにspを使うことができないのですか? 私は2つの違いが分かります。私はspがdpのスーパーセットであるかどうかを尋ねています。なぜdpを使うのですか?ビューですべてのサイズを指定するのにspを使用しないのはなぜですか?なぜ、spをdpの代わりにすべて使用するのではないのですか?
0
A
答えて
1
DP 密度に依存しないピクセル - 画面の物理的密度に基づいている抽象ユニット。これらの単位は160 dpiの画面を基準にしているため、1 dpは160 dpiの画面上の1ピクセルです。 dpとピクセルの比率は画面の密度に応じて変化しますが、必ずしも正比例ではありません。注意:コンパイラは "dip"と "dp"の両方を受け入れますが、 "dp"は "sp"と一貫しています。
sp- スケールに依存しないピクセル - これはdp単位のようですが、ユーザーのフォントサイズの優先順位に合わせて調整されます。フォントサイズを指定するときは、本機を使用することをお勧めします。そのため、画面の密度とユーザーの好みの両方で調整されます。
はDensity Independence in androidとSupporting Multiple Screens
2
測定のSP部は、フォントのために使用され、DPがあることをまったく同じ方法で依存画素 密度である参照します。あなたのフォントがどれくらい大きくなるかを決めるときに Androidデバイスが考慮する余分な計算は、使用するspの値に基づいて は、ユーザー独自のフォントサイズ設定です。したがって、普通のサイズのフォントを持つデバイスとエミュレータで アプリをテストすると、 の視力障害(または大きなフォントが好き)のフォント設定が大きいユーザーは、 あなたが見たものと異なるものが表示されますテスト中。
0
spをすべて使用できないのは、設定からフォントサイズを大きくすると、ボタンやその他のビューではなく、テキストのサイズを変更するだけだからです。だから、残りの部分はdpを使い、テキストはspを使うだけです。
関連する問題
- 1. RELEASEの代わりにNDEBUGを使用するのはなぜですか?
- 2. Symfonyプロキシの代わりにワニスを使用するのはなぜですか?
- 3. なぜSQLBRITEで、代わりにSQLiteを使用するのですか?
- 4. WCF/Silverlight:なぜクライアントの代わりにChannelFactoryを使用するのですか?
- 5. なぜRabbitMQの代わりにCeleryを使用するのですか?
- 6. なぜwindow.locationの代わりにルーティングを使用するのですか?
- 7. なぜJavaの代わりにClojureを使用するのですか
- 8. なぜtf.stackの代わりにtf.concatを使用するのですか?
- 9. C#では、なぜStreamWriterの代わりにTextWriterを使用できますか?
- 10. なぜAssembly.LoadFromの代わりにAssembly.LoadFileを使用しますか?
- 11. JRubyの代わりにRubyを使用することを検討しているのはなぜですか?
- 12. オートエンコーダで希薄語の代わりに正規化用語を使用しないのはなぜですか?
- 13. this.objectNameの代わりにExt.getCmp( 'id')を使用しなければならないのはなぜですか?
- 14. なぜwindow.showModalDialogは推奨されていませんか?代わりに何を使用するのですか?
- 15. なぜ文中の他の場所でも値が使用されない場合、i ++の代わりに++ iを使用するのはなぜですか?
- 16. ArrayListにsize()の代わりにgetSize()がないのはなぜですか?
- 17. なぜ* headの代わりに** headが使用されていますか?
- 18. なぜRustは "switch"か "case"の代わりに "match"を使うのですか?
- 19. (メタタグを使用して)リダイレクトする代わりにサーブレットページをリフレッシュ/リロードするのはなぜですか?
- 20. なぜ= - セレクタの結果の代わりにすべてを選択する
- 21. なぜ関数内でオブジェクトの代わりにこれを使用できないのですか?
- 22. なぜVaadinでVerticalLayoutの代わりにFormLayoutを使用しますか?
- 23. ハッシュを削除するときに[]の代わりにa()を使用するのはなぜですか?
- 24. なぜAngular 2がルーティングで単純な配列の代わりにObservablesを使用するのですか?
- 25. PHP 5がclassName()の代わりに__contruct()をコンストラクタとして使用するのはなぜですか?
- 26. C関数の代わりにポインタをパラメータとして使用するのはなぜですか?
- 27. なぜAndroidのスタジオはカレンダーの代わりにCalendarContract.Calendarsを使用しますか?
- 28. Java 8のハッシュマップでリンクリストの代わりにバイナリツリーを使用するのはなぜですか?
- 29. なぜ "new"を使用する代わりにCreateメソッドを使用するのですか?
- 30. なぜJavaの代わりにSparkを使用して、cassandraのデータを処理するのですか?
可能な複製http://stackoverflow.com/questions/2025282/what-is-the-difference-between-px-dp-dip-and-sp-on-android –
私の答えを参照してくださいhttp://stackoverflow.com/a/40717863/6893465異なる画面サイズの違いを参照してください.. –