ボタンの配列を RelativeLayout に「ランダムに」配置するにはどうすればよいのでしょうか。
ビュー全体にボタンを配置することはできますか?
ご協力いただきありがとうございます!setX() と setY() を使用してみましたが、これらは浮動小数点数であり、画面のサイズに比例してボタンを配置する方法がわかりません。
ボタンにレイアウト マージンを追加できます。マージンは互いに対してではなくフレームに対して相対的に解釈されるため、実際にはボタンを配置します。
余白を設定するには、ビューのレイアウト パラメータを設定する必要があります。
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
Random random = new Random();
params.leftMargin = random.nextInt(100);
params.topMargin = random.nextInt(100);
button.setLayoutParams(params);
ただし、これによりボタンがオーバーラップしたり、アクティビティの外に出たりする可能性があるため、位置に完全にランダムな値を使用するのではなく、オーバーラップのチェックを実行し、デバイスの解像度とボタンのサイズに従ってランダムな範囲を設定することをお勧めします。
デバイスの表示サイズを取得するには:
Display display= activity.getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int Height = display.getHeight();
代わりに、最初にボタン配列を作成し、それぞれのIDを見つけます...
LayoutParams lp = new LinearLayout.LayoutParams(widthOfButtons,LayoutParams.WRAP_CONTENT);
Button[] buttons;
for(int i=0; i<4; i++) { //suppose you have four buttons
{
String buttonID = "button" + (i+1);
int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
buttons[i] = ((Button) findViewById(resID));
buttons[i].setHeight(yourvalue);
buttons[i].setWidth(yourvalue);
buttons[i].setLayoutParams(lp);
}
それがあなたのために働くことを願っています