各テキストビューに次の行を使用する代わりに:
android:textSize="40sp"
40sp を変数に置き換えることはできますか?
余談ですが、ユーザー定義の設定では SP ユニットを使用するように勧められています。これはベストプラクティスですか?
40sp を変数に置き換えることはできますか?
ディメンション リソース(例: ) を使用するかandroid:textSize="@dimen/someSize"
、これを行うスタイルを使用するか (AlexN の回答による)、または を介して実行時にサイズを設定できますsetTextSize()
。
ユーザー定義の設定では、SP ユニットを使用することをお勧めします。これはベストプラクティスですか?
新しいバージョンの Android では、ユーザーは設定アプリケーションを介して基本フォント サイズを変更できます。for unitsを使用sp
すると、フォント サイズは基本フォント サイズに合わせて拡大縮小されます。他の単位 (例: dp
) を使用する場合、ユーザーの [設定] の内容に関係なく、フォント サイズは同じままです。の特定の使用法が「ベスト プラクティス」であるかどうかを言うことは不可能sp
です。フォント サイズを変更できるようにすることが悪いことである場合があることは確かです。ただし、デフォルトでは、sp
おそらく正しい出発点です。
私が知っているように、SP を使用することはテキスト サイズにとって非常に良い方法です。最初の質問によると、変数は使用できないと思いますが、もっと良い方法があります。それをチェックしてください - http://developer.android.com/guide/topics/ui/themes.html
したがって、スタイルを定義する場合は、ビューを次のように XML で宣言できます。<TextView android:id = "@+id/myId" style = "@style/myStyle"/>
このスタイルは、その画面で textView に設定するすべてのパラメーターをカプセル化します。
いいえ、XML ファイルでコード ベースの変数を使用することはできません。ただし、これにはスタイルを使用できます。
例:
<style name="MyTvStyle">
<item name="android:textSize">40sp</item>
</style>
次に、次のように適用します。
<TextView style="@style/MyTvStyle" ... />
コードベースのアプローチも可能です。TextView に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
、デバイスのサイズとユーザー設定に合わせてスケーリングします。