http://puu.sh/ilLDM/374202dbc6.png
所以这就是我想要完成的事情,上面是视图的样子,我试图将按钮的位置限制在红色方块上。
这是我到目前为止尝试过的代码:
ImageButton charButton = (ImageButton) findViewById(R.id.goodIcon);
charButton.setImageDrawable(x);
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
width = width - 100; //Wont go within 100 of the screen edge
height = height - 100; //Wont go within 100 of bottom edge
Random r1 = new Random();
int Button1H = r1.nextInt(height - 200) + 200;
if (Button1H<100) {Button1H = 100;}
if (Button1H >= displayMetrics.heightPixels-100){Button1H = displayMetrics.heightPixels-100;}
int Button1W = r1.nextInt(width - 50) +50;
if (Button1W >= displayMetrics.widthPixels-100){Button1W = displayMetrics.widthPixels - 300;}
charButton.setX(Button1W);
charButton.setY(Button1H);
我意识到这很可能不是处理它的最佳方式,但我真的不希望图标在顶部和底部的视图上方,或者在右侧的外部显示。
有任何帮助吗?使用Android Studio。顶部的图片显示了我希望它能够出现的范围。
答案 0 :(得分:1)
我提出了自己的解决方案!所以我做的是我添加了第二个视图到现有的布局,匹配图片中红色方块的大小,然后使用此代码:
ImageButton charButton = (ImageButton) findViewById(R.id.goodIcon);
RelativeLayout gameLayout = (RelativeLayout) findViewById(R.id.gameLayout);
int width = gameLayout.getWidth();
int height = gameLayout.getHeight();
charButton.setImageDrawable(x);
int x = width;
int y = height;
Random buttonPlace = new Random();
int buttonY = buttonPlace.nextInt(y-100)+100;
int buttonX = buttonPlace.nextInt(x-50)+50;
charButton.setX(buttonX);
charButton.setY(buttonY);
它抓住了二级布局的宽度和高度,并使用它来设置按钮的显示位置,从而将其保持在正确的框架内