设置按钮中心水平

时间:2015-11-26 14:54:05

标签: android button

我知道这个话题有一些问题,但对我来说都没有。我在RelativeLayout中创建了一个简单的按钮,当我点击它时,我希望按钮跳到屏幕中间。所以我必须以编程方式将按钮设置为CenterHorizo​​ntal和CenterVertical。 这是我设置按钮centerHorizo​​ntal的代码:

Dim a As Boolean 'defining your Boolean Variables
Dim b As Boolean

For i = 1 To 0 Step -1: a = i 'this take 'a' from TRUE to FALSE
    For j = 1 To 0 Step -1: b = j 'this take 'b' from TRUE to FALSE

    Next j
Next i

这是我的xml:

void freeTree(node *root)
{ 
    if (!root )
        return;

    freeTree(root->no);
    freeTree(root->yes);
    free(root);
    return;
}

当我按下按钮时没有任何反应。如果有人知道如何解决它,请回复。

2 个答案:

答案 0 :(得分:1)

您必须删除已在xml中定义的左对齐规则。

   Button  btn = (Button)findViewById(R.id.button);
   RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) btn.getLayoutParams();
   lp.addRule(RelativeLayout.CENTER_HORIZONTAL, 1);
   lp.removeRule(RelativeLayout.ALIGN_PARENT_START);
   lp.removeRule(RelativeLayout.ALIGN_PARENT_LEFT);
   btn.setLayoutParams(lp);

请记住,只有API支持RelativeLayout.LayoutParams.removeRule> = 17

答案 1 :(得分:1)

所以我在你的代码中发现了一些问题: 1.您必须在单击按钮后添加规则,因为您在变量“layoutParams”和对象之间创建了引用。 你需要摆脱现有规则。

示例代码:

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 0);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_START, 0);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
            layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
            btn.setLayoutParams(layoutParams);
        }
    });