2013-03-30 23 views
23

異なるデバイスサイズのテキストビューに異なるフォントサイズを使用して、文字を読みやすくすることを計画しました。私は既に、異なるデバイスに異なるレイアウトを使用しないことを決定し、すべてのデバイスに適合する共通のレイアウトを構築しました。現在のところ、唯一の問題はテキストサイズです。デバイスのサイズに基づいてフォントサイズを増やす

質問:

  1. 私は、デバイスのサイズ(物理的なサイズ)に基づいて、フォントサイズを変更する方法のあなたの技術的な提案を持っていると思います。

  2. アスペクト比に基づいてフォントサイズを派生させる方法。

  3. このようなアプローチを使用した場合の欠陥はありますか?

テキストビューのためのXML事前に

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tvValue4" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="I planned to use different font size for the textview on different device size so as to make the letters legible. I have already decided not to use different layouts for different devices and built a common layout to fit in all the devices. Now the only problem is on the text size." 
     android:textColor="#000000" 
     android:textSize="15sp" /> 

</LinearLayout> 

おかげ

答えて

0

アンドロイドはthis- DPとSPのための施設に建てられました。 dpはデバイスピクセルです。基本的に1dp = 1/160インチです。これにより、フォントの高さを実世界のサイズで指定することができます。 Spはスケーリングされたピクセルです。このサイズは、デフォルトのフォントサイズに基づいて調整されるので、ユーザはシステムフォントを拡大して、あなたのアプリがそれに合うようにすることができます。ビッグテキストを必要とする視力の問題を抱えている人にとっては便利ですが、他の人にはスクリーンの不動産を占有しません。

これらのいずれかを使用しているはずです。

+0

picpaste.com/Untitled1-4MSIpnIo.png私はTextViewのため15dpを使用しているスクリーンショットをチェックしてください。しかし、これは、異なるデバイスに異なる行数で表示されます。私は同じ数の行を持つすべての画面を持つ必要があります。画面サイズが小さい場合、フォントは小さくなければならず、画面サイズが大きくなるとフォントが大きく変わってしまいます。iappmaker – iappmaker

+1

dp(またはdip)は「デバイスピクセル」ではなく、デバイスに依存しないピクセルです。 。 http://developer.android.com/guide/topics/resources/more-resources.html#Dimensionを参照してください。ポストの残りの部分は1インチあたり約160ドットですが、それ以外のものはほとんど正しいです。私はちょうどペダンティックです。 –

23

はい、この方法には欠陥があります。 Android搭載端末のサイズはさまざまですが、密度も非常に異なる場合があります。

enter image description here

あなただけのAndroidデザインbest practicesを次のようする必要があります。

enter image description here

彼らは実際には非常によく考えられています。なぜあなたは車輪を再発明したいですか?

+0

http://picpaste.com/Untitled1-4MSIpnIo.pngスクリーンショットをチェックしてください私は15dpをテキストビューに使用しました。しかし、これは、異なるデバイスに異なる行数で表示されます。私は同じ数の行を持つすべての画面を持つ必要があります。画面サイズが小さい場合、フォントは小さくなければならず、画面サイズが大きくなるとフォントが大きくなります。 – iappmaker

+0

http://developer.android.com/training/multiscreen/screendensities.htmlを参照してください。 「dp」は、160dpiのピクセルの物理的なサイズに対応する密度に依存しないピクセルです。 'sp'は同じベースユニットですが、ユーザーの好みのテキストサイズ(スケールに依存しないピクセル)でスケールされるので、テキストサイズを定義するときはこの測定単位を使用するべきです(ただし、レイアウトサイズは決して使用しないでください)。 – CrandellWS

14

これを試してください。この属性をXMLに追加してください。スクリーンサイズに基づいてテキストサイズを調整します。

style="@android:style/TextAppearance.DeviceDefault.Medium" 
+9

これはAPI 14から利用できます。私はmin APIを使用しています。 – iappmaker

6

スケールのピクセル(sp)を使用してください。 Androidは、デバイスの密度に応じてフォントサイズを調整します。上記の記事は、より良い説明と推論を持っています。

+5

私はspに変更しました。それでも同じ問題です。基本的に私はこのテキストビューをすべてのデバイスの画面の同じ%を占め、テキストで埋めなければなりません。 – iappmaker

+0

はプログラムでまたはxmlからfontsizeを設定していますか? – bostan

+0

をxmlに入れてみましょう。 – iappmaker

1

画面サイズに応じて5fを任意に変更します。

http://developer.android.com/guide/practices/screens_support.html。トピックベストプラクティスを確認してください。

+0

これはtv.setTextSize(size)とどのように違うのですか? – iappmaker

+0

textviewの特定の単語のtextsizeを設定します。同じフォントサイズのテキストビューでテキスト全体を必要としない場合は、これを使用できます。あなたは2つの言葉のこんにちは世界、あなたは同じ大きさの単語を維持helloのフォントサイズを増やすことができます。 – Raghunandan

+1

RelativeSizeSpanコンストラクタが取る値(5f)はどのようにspに変換されますか?それはどれくらいの数になりますか?それをどうすれば計算できますか? –

0

この問題について私は非常に多くのプロジェクトで以下のライブラリを使用しており、これは素晴らしいと思います。画面を心配する必要はありません。しかし、やはりタブ用に別々のレイアウトを作成する必要があります。

https://github.com/intuit/sdp

+0

これはコメントとして適しています。 – BlackBeard

関連する問題