ImageView getLayoutParams 宽度单位

Posted

技术标签:

【中文标题】ImageView getLayoutParams 宽度单位【英文标题】:ImageView getLayoutParams width unit 【发布时间】:2013-08-23 06:14:44 【问题描述】:

如果我想在 Java 中以编程方式设置 ImageView 的宽度/高度,如下所示:

image_view.getLayoutParams().width = 200;

那些“200”的单位是什么?是 px/dp 吗? 它在每台设备上看起来“都一样”吗? (这意味着:它在平板电脑上非常大,而在智能手机上却很小?)

【问题讨论】:

【参考方案1】:

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html

相当肯定是像素。

高度,MATCH_PARENT、WRAP_CONTENT 或以像素为单位的固定大小

【讨论】:

我明白了,所以它在分辨率更高的屏幕上非常小,对吧? 很遗憾我不是 Android 开发者,我无法 100% 确认这一点。 是的。由于您以 px 为单位设置值,因此对于大型设备来说它看起来非常小。【参考方案2】:

以像素为单位。但是要独立于设备,我们需要在 dp 中设置值。

因此,在您的代码中,您可以编写一个 swicth 案例,并根据您可以从设备指标获得的屏幕分辨率,可以像这样设置相应的值:

   DisplayMetrics metrics = this.getResources().getDisplayMetrics();
   if(metrics.density == 1)
        //
    else if(metrics.density == 2)
        //
    else if(metrics.density == 1.5)
        //

您还可以使用公式将 px 值更改为 dp:

px = dp * (dpi/160)

【讨论】:

以上是关于ImageView getLayoutParams 宽度单位的主要内容,如果未能解决你的问题,请参考以下文章

如何使用代码动态的获取和设置ImageView的宽度和高度

android安卓动态设置控件宽高

怎么用代码改变ImageView的width和height-Android开发问答

android 动态设置布局宽度

之间的区别:myView.getLayoutParams().height = screenHeight 和 myView.setLayoutParams(lp)?

android 如何动态设置控件的宽度和高度