Android View.setPadding(int left, int top, int right, int bottom)
はpxの値しか受け入れませんが、私はdpで埋め込みを設定したいと思います。その周りには道がありますか?View.setPaddingはpxでしか受け付けませんが、とにかくdpでsetPaddingするのですか?
82
A
答えて
162
ストレートコード
int padding_in_dp = 6; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
0
あなたは、特定のDPI値のピクセルを計算することができます。http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31
0
私は同じ問題を抱えてきました。私が見つけた唯一の解決策(それは本当にあなたを助けません:))は、XMLファイルに設定することです。
コードから密度を得ることができる場合は、変換を使用することができます。「ディップ単位の画面ピクセルへの変換は簡単です。pixels = dips *(density/160)」
(http://developer.android.com/guide/practices/screens_support.htmlから)編集:あなたがある(XMLファイル内(DPまたは任意で)ディメンションを定義した場合http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi
78
へ:あなたは画面密度を得ることができますとにかく、少なくともほとんどの場合)、このコードを使用してピクセル値を取得できます。
context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)
+5
これは、受け入れられた回答よりも優れた実践IMOです – Aphex
こんにちは、私は質問があります。この式はパディングのみに使用されていますか?例えば矩形の余白またはdimmension? – Emerald214
これは[dp単位をピクセル単位に変換する](http://developer.android.com/guide/practices/screens_support.html#dips-pels)の式です。どこでも使用できます –
'getResources()'はアクティビティによって継承された関数だと仮定しますが、カスタムリストビューアダプタでこれらの行を使用しようとしています。 'getResources()'を呼び出せない場合、私はこれを行うことができる方法はありますか? –