在android中交换按钮的位置

时间:2013-04-29 12:02:56

标签: java android

所以我想要实现的是改变按钮的位置。这是我的样本图片:

注意:
我的按钮有背景可绘制,例如,我刚刚上传没有背景图像的按钮。

默认
de

改组时:

enter image description here

所以这是我正在处理的代码:

        List<Integer> objects = new ArrayList<Integer>();
        objects.add(0);
        objects.add(1);
        objects.add(2);
        objects.add(3);
        objects.add(4);

    // Shuffle the collection
    Collections.shuffle(objects);

    List<Button> buttons = new ArrayList<Button>();

    buttons.add((Button) findViewById(R.id.bObject1Stage2_1));
    buttons.add((Button) findViewById(R.id.bObject2Stage2_1));
    buttons.add((Button) findViewById(R.id.bObject3Stage2_1));
    buttons.add((Button) findViewById(R.id.bObject4Stage2_1));
    buttons.add((Button) findViewById(R.id.bObject5Stage2_1));

    Collections.shuffle(buttons);

    for (int i = 0; i < objects.size(); i++) {
        //buttons.get(i).setText(objects.get(i).toString());
        buttons.get(i);
    }

但它并没有改变按钮的位置。我在这里想念的是什么?真的很感激任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

使用RelativeLayout.LayoutParams在按钮之间切换值您希望移动并使用setLayoutParams方法应用它们

这将允许您切换2个按钮的位置。要改组他们你必须准备一些算法来制作开关数量。

RelativeLayout.LayoutParams params1 = (RelativeLayout.LayoutParams) b1.getLayoutParams();
RelativeLayout.LayoutParams params2 = (RelativeLayout.LayoutParams) b2.getLayoutParams();

b1.setLayoutParams(params2);
b2.setLayoutParams(params1);

仅当这些按钮彼此不相关时才会起作用。 如果例如b2是相对于b1所以它低于它你必须使用addRule方法将b1设置为低于b1并且b2上的removeRule因此它不再相对于b1。

例如你有xml

 <Button
android:id="@+id/bObject2Stage2_1"
/*...*/
android:layout_toRightOf="@+id/bObject1Stage2_1" />

设置此规则您将编写

params.addRule(RelativeLayout.RIGHT_OF, R.id.bObject1Stage2_1);