xml中的Dp与java dp-px转换不匹配

时间:2017-08-13 21:18:18

标签: android xml density-independent-pixel

由于循环重复,我需要在java而不是xml中设置文本,边距或图像的大小。

当我在xml文件中为文本设置20dp时,结果比使用此(基于材料设计指南)的转换方法转换为px的相同20dp小3倍:

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用此

categoryText.setTextSize(TypedValue.COMPLEX_UNIT_PX,dp20);