我有LinearLayout
9 Buttons
,我想互相交换他们的位置。我尝试了一些东西,但它似乎没有用,这是我尝试的,我知道这不是随机的,但我想随意:
float pos0,pos1,pos2,pos3,pos4,pos5,pos6,pos7,pos8,pos9;
float place1,place2,place3,place4,place5,place6,place7,place8,place9;
pos0=btn0.getX();
pos1=btn1.getX();
pos2=btn2.getX();
pos3=btn3.getX();
pos4=btn4.getX();
pos5=btn5.getX();
pos6=btn6.getX();
pos7=btn7.getX();
pos8=btn8.getX();
pos9=btn9.getX();
float [] arrange1 = {
pos0,pos1,pos2,pos3,pos4,pos5,pos6,pos7,pos8,pos9
};
float [] arrange2 = {
pos0,pos1,pos2,pos3,pos4,pos5,pos6,pos7,pos8,pos9
};
for(int i=0;i<10;i++){
place1=random(arrange1);
place2=random2(arrange2);
if(place1==place2){
place1=pos0;
place2=pos9;
}
while(place1!=place2){
if(i==1){
btn0.setX(place2);
btn1.setX(place1);
}
if(i==2){
btn2.setX(place2);
btn3.setX(place1);
}
if(i==3){
btn4.setX(place2);
btn5.setX(place1);
}
if(i==4){
btn6.setX(place2);
btn7.setX(place1);
}
if(i==5){
btn8.setX(place2);
btn9.setX(place1);
}
if(i==6){
btn0.setX(place2);
btn2.setX(place1);
}
if(i==7){
btn2.setX(place2);
btn7.setX(place1);
}
if(i==8){
btn9.setX(place2);
btn1.setX(place1);
}
if(i==9){
btn4.setX(place2);
btn2.setX(place1);
}
}
}
由于
答案 0 :(得分:0)
您无法在LinearLayout中更改视图的顺序。您可以使用
删除视图并将其添加回不同的位置ViewGroup.addView (View child, int index)
当然这不是很有效。
当您的按钮看起来完全相同时,更改它们上的标签可能会更容易。
答案 1 :(得分:0)
我将所有按钮放在ArrayList中,然后使用Math.Random随机选择其中一个按钮并将其放在屏幕上,从ArrayList中删除所述按钮,然后重复。这样,您可以重新排列而不会破坏。在重新排列之前,我会转到每个按钮,并设置SetVisible(false)以防止混淆。
如果这工作太多,我在另一个回复中看到,你问是否可以更改按钮的标签。绝对!这实际上是一个更好的主意。我会在那里做出回应,但我没有足够高的评价来发表评论。
无论如何,如果你正在进行重命名选项,你可以做一些......
public void rearrange()
{
int[] nums = new int[10];
int holder;
Random r = new Random();
boolean doesItMatch = true;
holder = r.nextInt(10);
for(int j = 0; j < 10; j++)
{
nums[j] = 10;
}
//^^This for loop is just to give them a value to start with so they won't be null.
//I assume the buttons will already have values by the time it's time to scramble
for(int i = 0; i < 10; i++)
{
do
{
doesItMatch = false;
for(int k = 0; k < 10; k++)
{
if(nums[k] == holder)
{
doesItMatch = true;
holder = r.nextInt(10);
k = 10;
}
}
}while(doesItMatch);
nums[i] = holder;
r.nextInt(10);
}
}
然后,在您这样做之后,只需将名称链接到数字并开始粘贴。例如,让我们想象Johnny继续1,Tiffy继续2,Michael继续3,等等。只搜索一个有1并用John替换,2用Tiffy等等。我建议你让它们看不见你将数字值放在那里,以便它们不会在数字之间来回闪烁。或者您可以扩展按钮类/向按钮类添加属性,为其提供索引。然后,一切都应该很好地完成!