2012-09-02 4 views

答えて

5

私は40spを変数に置き換えることができますか?

あなたはa dimension resource(例えば、android:textSize="@dimen/someSize")を使用する、または(AlexNの回答ごとに)これを行い、スタイルを使用する、またはsetTextSize()を経由して、実行時にサイズを設定することができます。

SP単位は、ユーザー定義の設定に従って使用することをお勧めします。これはベストプラクティスですか?

Androidの新しいバージョンでは、ユーザーは設定アプリケーションで基本フォントサイズを変更できます。ユニットにspを使用すると、フォントサイズが基準フォントサイズに沿って拡大/縮小されます。他のユニット(例:dp)を使用すると、ユーザーの設定にかかわらずフォントサイズは変わりません。 spの使用方法が「ベストプラクティス」であるかどうかは言えません。フォントサイズを変更することができない場合があることは間違いありません。しかし、デフォルトでは、おそらくspが適切な出発点です。

2

私が知っているように、SPを使用することは、テキストサイズにとっては本当に良い習慣です。 あなたの最初の質問によると、私は変数を使うことはできないと思いますが、よりよい方法があります。それをチェックアウト - http://developer.android.com/guide/topics/ui/themes.html

をあなたのスタイルを定義しますのであれば、あなたは<TextView android:id = "@+id/myId" style = "@style/myStyle"/> のようなXMLであなたのビューを宣言することができ、このスタイルは、あなたがその画面上にtextViewsに設定したいすべてのパラメータをincapsulateます。

+0

ありがとうございます。私はスタイルについて知りませんでした。 – tomofv

1

いいえ、XMLファイルでコードベースの変数を使用することはできません。ただし、これにスタイルを使用することはできます。

例:

<style name="MyTvStyle"> 
    <item name="android:textSize">40sp</item> 
</style> 

次に、このようにそれを適用する:

<TextView style="@style/MyTvStyle" ... /> 

コードベースのアプローチも可能です。 TextViewsのandroid:id属性が定義されている場合は、コードでfindViewByIdメソッドを使用してそれらを取得できます。

例:

int[] id_array = { 
    R.id.textview1, R.id.textview2, R.id.textview3 //Put all the id's of your textviews here 
} 

for(int i : id_array) { //Loop trough all the id's and retrieve the Textview associated with it. 
    TextView textview = (TextView)findViewById(i); 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,40); //Set the text size to 40sp 
} 

そして、はい、それは通常のピクセル値の代わりにspを使用することが常に良いでしょう。 spはデバイスのサイズとユーザー設定に合わせて調整されます。

関連する問題