web-dev-qa-db-ja.com

Android sp vs dp texts-'scale'を調整するものとサポートの哲学は何か

他の多くの投稿から、Androidのテキストにはdpではなくspを使用する必要があることがわかります。その理由は、「ユーザーの設定」を尊重するためです。

しかし、正確にはこれらの好みは何ですか?ユーザーはこの設定をどのように変更しますか?

携帯電話の設定から参照を見つけることができません(「アクセシビリティ」または「ディスプレイ」に何かを期待していました)。では、ユーザー設定とは何でしょうか? 「ビッグフォント」などのアプリを介してのみ行われますか?

それが(ビッグフォントのようなもので設定されている)と仮定して、フォントを130%に設定して、Googleドキュメントやその他のGoogleアプリで遊んだことがあります。ほとんどのレイアウトは問題ありませんが、一部が途切れて読み取れない場合があります(大画面のSGS2の場合)。では、 'sp'を使用してテキストサイズのアプリを開発する方法は何ですか? 100%のスケーリングで動作することを確認してから、他の設定を無視しますか-ユーザーが心配することができる特別なケースと呼びますか、またはテキストがオーバーフローした場合に、拡張またはスクロール可能であることを確認するために邪魔になりませんか? ?

1つの引数は、 '-dp'を使用する必要があるということです保証ユーザーは(拡大鏡を使用する必要がある場合でも)テキストが表示される可能性があります

考え/コメント?

22
Sam

一部のAndroidデバイス(メーカーによって異なります)の設定メニューに表示されます。また、一部のユーザー補助オプション(デバイスによって異なります)によって変更される場合もあります。

一般に、特にテキストの本文が大きい場合は、常にスケールに依存しないピクセルを使用する必要があります。

ただし、テキストが既知のサイズの境界ボックスに収まる必要がある場合は、密度に依存しないピクセルを使用して、テキストが常に適切に収まり、ユーザーの設定に関係なくすべての文字が表示されるようにする必要があります。

簡単に言えば、テキストサイズを5spほど増やすと、テキストが読めなくなったり、UIが壊れたりするでしょうか。その場合は、密度に依存しないピクセルを使用してください。そうでない場合は、スケールに依存しないピクセルを使用します。ただし、一般的には、可能な限りスケールに依存しないピクセルを使用することを目指します。つまり、さまざまなテキストサイズに対応できるUIを設計します。

54
Joseph Earl

ICS以上(Honeycombの可能性もあり、私が間違っている場合は修正してください)にあるため、テキストにはspユニットを使用することをお勧めしますis =ユーザーのフォントサイズの設定なので、Gingerbread以下を使用している場合は、この設定を見つけることができません。

設定は、設定、表示、フォントサイズの下にあります。また、[設定]、[ユーザー補助]、[大きなテキスト]にもオプションがあります。

spの使用方法に関する質問に対処するには、デフォルトでは、フォントサイズの設定を変更せずに、1sp1dpと同等です(また、これらは同等です)プリファレンスが導入される前)。お気づきのように、ユーザーが大量のテキストを使用するケースを想定して設計すると、スクロールする必要があると思われる場所にスクロールする必要があると想定する必要があります。

6
wsanville

答えは、この特定の問題を総体的に見ることにあります。

フォントサイズに「sp」を使用する動機は、ユーザーがデバイスでフォントサイズを変更する前に、開発者がレイアウトを制御できるようにすることにあります。

例:

2つの極端なケースを見てみましょう:

1)ユーザーがフォントサイズ「小」を選択

これは私のレイアウトがどのように見えるかです:

http://postimg.org/image/kiyqeo2bh/

レイアウトxmlは次のとおりです。

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="16dp"
Android:paddingLeft="16dp"
Android:paddingRight="16dp"
Android:paddingTop="16dp"
tools:context=".MainActivity"
Android:orientation="vertical">

<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_row="0"
    Android:layout_column="0"
    Android:text="Material-Design ist die Scheiße"
    Android:textSize="18sp"
    Android:background="#ffff0000" />
<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_row="0"
    Android:layout_column="0"
    Android:text="Material-Design ist die Scheiße"
    Android:textSize="25sp"
    Android:background="#ffff0000" />

2)ユーザーがフォントサイズ「巨大」を選択した場合:

これは私のレイアウトがどのように見えるかです:

http://postimg.org/image/d7rax9wob/

私のレイアウトxmlは上記のケース1)と同じです。

したがって、ここで何が起こったのかがわかるように、TextViewは、フォントサイズの範囲全体(小さいものから大きいもの)をラップしないため、spでの完璧なフォントサイズのようなものです。しかし、下部のTextViewは、2)の場合にレイアウト/デザインを完全に混乱させます。

したがって、開発者はあなたのデザインに合うspのサイズを反復して決定することができ、Androidはそれを描画します。

1
dessertcook