在LinearLayout中的任意位置添加ImageView

时间:2018-08-21 14:41:24

标签: java android imageview

我想将图像视图动态添加到全屏线性布局。我已经编写了一些代码,但是某些图像视图部分或完全不在屏幕外。有时候,图片视图会在手机屏幕上显示。

如何确保它们完全保留在屏幕中。

DisplayMetrics displayMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

final int widthArea = displayMetrics.widthPixels;
final int heightArea = displayMetrics.heightPixels;
final LinearLayout home = (LinearLayout) findViewById(R.id.llHome);

ImageView imgView = new ImageView(MainActivity.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(200, 200);
imgView.setLayoutParams(lp);
imgView.setImageResource(R.drawable.img_1);
imgView.setX(r.nextInt(widthArea));
imgView.setY(r.nextInt(heightArea));
home.addView(imgView);

1 个答案:

答案 0 :(得分:0)

您应该考虑图像本身的尺寸。设置X和Y将其起点放置在屏幕内,但可能会在侧面泄漏。

首先,将图像加载为Drawable,然后将drawable.getWidth()(甚至是高度,这取决于您的布局)添加到您的 X 位置。

imgView.setX(r.nextInt(widthArea - drawable.getWidth()) + drawable.getWidth());