2017-08-13 24 views
1

ループの繰り返しにより、xmlではなくjavaでテキスト、余白または画像のサイズを設定する必要があります。xpのDpがjava dp-pxの変換と一致しない

Iは、XMLファイル内のテキストを20dpを設定すると、結果は同じ20dpより3倍小さい場合には、この(系材料設計指針)とPXに変換し、変換方法:

DP =(ピクセルの幅* 160)/密度

xmlとjavaで同じdpを取得するにはどうすればよいですか?

RES:

<resources> 

    <dimen name="cat_height">20dp</dimen> 

</resources> 

のxml:

 <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Business" 
      android:textSize="@dimen/cat_height" 
      android:textStyle="bold" /> 

ジャワ:事前に

int dp20 = getResources().getDimensionPixelSize(R.dimen.cat_height); 

(...) 

TextView categoryText = new TextView(this);                          
categoryText.setText(subCategoryNames.get(i));                         
categoryText.setTextSize(dp20);                             
categoryText.setTypeface(null, Typeface.BOLD);                         
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
params.setMargins(dp20, dp20, dp20, dp20);                          
mainLinear.addView(categoryText, params);                           

above xml, below java result

ありがとう!

答えて

0

使用この

categoryText.setTextSize(TypedValue.COMPLEX_UNIT_PX,dp20); 
+0

感謝!このアプローチはsetTextSizeに対してのみ機能します。マージンには依然としてpx値が必要です。いろいろな分野で働く一つの価値が必要です。なぜなら、どこにいてもjavaのpxが必要だからです。私はsetTextSize例外として参照してください – Govean

+0

https://stackoverflow.com/questions/33244196/understanding-typed-value-class – Salman500

関連する問題