基本的に私はこれをXMLの中に持っていますが、コードの中にそれを作り直さなければなりません。どうすればいいのですか?
<EditText
Android:layout_width="140dp"
Android:layout_height="20dp"
Android:background="@drawable/input_bg01"
Android:textSize="10dp"
Android:gravity="center"
Android:text="111-222-333 FOOO" />
これを使用してテキストサイズを設定できますが、layout_widthとheightはどうですか?
edTxt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);
ピクセルの代わりにDPユニットを使用するようにコードに指示する方法はありますか?または、DPをピクセルに変換する変換関数ですか?
解決済み ここ 。
エキス:
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
float dp = 20f;
float fpixels = metrics.density * dp;
int pixels = (int) (fpixels + 0.5f);
次を使用できます。
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics());
現在、pixels
の値は、デバイスの現在の画面密度で10dp
と同等です。
TypedValue には、変換に役立つ他の同様のメソッドが含まれています。
完全を期すために:質問に対する別の解決策(私が好む)が与えられます here
setTextSize(float)
は、スケーリングされたピクセル値を期待します。したがって、setTextSize(10)
を使用すると、目的の結果が得られます。ただし、getDimension()
およびgetDimensionPixelSize()
は、ピクセル単位でサイズを返します。
したがって、あなたの例では
setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.edTxt_text_size));
どこ <dimen name="edtxt_text_size">10dp</dimen>
は、たとえばdimens.xmlファイルで設定されます。