以编程方式设置 ImageView 在 "dp" 中的位置 ?



我读过:

如何使用代码而不是xml 设置ImageView的边距

以及要使用的注释"您可以使用context.getResources().getDisplayMetrics().desity缩放px值"

问题是,我有一个用颜色表示一些值的刻度,需要将光标指向某个值。

因为所有的东西都在"dip"中,我怎么能按语法发送dip,而不是px?

例如:

0___T_h_i_s__i_s___m_y___c_a_l_e_____________ 300dp

        ^  - My cursor pointing to 100dp (LeftMargin = 100dp)

我用这行代码来设置它:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(leftMargin, 0, 0, 0);
BMIcursor.setLayoutParams(lp);

以像素为单位的左边距可以这样计算:

leftMarginPx = leftMarginDp * context.getResources().getDisplayMetrics().density;

所以用你的代码:

    leftMarginDp = 100 // 100dp;
    leftMargin = leftMarginDp * context.getResources().getDisplayMetrics().density;
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    lp.setMargins(leftMargin, 0, 0, 0);
    BMIcursor.setLayoutParams(lp);

最新更新