在DP Java中以编程方式设置ImageView大小

Alk*_*Alk 1 java xml android imageview android-layout

我想设置一个ImageViewin 的宽度和高度Android.在ImageView不存在XML.它在这里创建:

public void setImageView(int i,Integer d, LinearLayout layout ) {
    ImageView imageView = new ImageView(this);
    imageView.setId(i);
    imageView.setPadding(2, 2, 2, 2);
    imageView.setImageBitmap(BitmapFactory.decodeResource(getResources(), d));
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    layout.addView(imageView);
}
Run Code Online (Sandbox Code Playgroud)

它被置于这个LinearLayout:

<HorizontalScrollView
    android:id="@+id/horizontal_scroll_view"
    android:layout_width="fill_parent"
    android:layout_gravity="center"
    android:background="@drawable/white_lines"
    android:layout_weight="15"
    android:layout_height="0dp" >

    <LinearLayout
        android:id="@+id/scroll_view_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#999A9FA1"
        android:orientation="horizontal" >

    </LinearLayout>

</HorizontalScrollView>
Run Code Online (Sandbox Code Playgroud)

所以基本上我setImageView多次调用这个方法并HorizontalScrollViewImageViews括号填充我的方法LinearLayouts.我需要在DP中设置这个高度而不是像素,这样它在所有设备上看起来都一样!

Eur*_*tré 6

您需要将您的值转换为dps,您可以使用以下函数来执行此操作:

 public static int dpToPx(int dp, Context context) {
    float density = context.getResources().getDisplayMetrics().density;
    return Math.round((float) dp * density);
}
Run Code Online (Sandbox Code Playgroud)