我知道这个话题有一些问题,但对我来说都没有。我在RelativeLayout中创建了一个简单的按钮,当我点击它时,我希望按钮跳到屏幕中间。所以我必须以编程方式将按钮设置为CenterHorizontal和CenterVertical。 这是我设置按钮centerHorizontal的代码:
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;
}
当我按下按钮时没有任何反应。如果有人知道如何解决它,请回复。
答案 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);
}
});