我想为一个按钮添加一个监听器,它可以改变这个按钮的位置。我试图用这个片段来解决这个问题但是没有像我预期的那样工作。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int top = button.getTop();
button.setTop(top + 40);
}
});
此代码只移动顶部而不是整个按钮。实际上,在点击动作之后,按钮变得高度几点,我看不到标签。怎么了?
如果它可以帮助我们更好地理解我的问题,我会告诉你其他方法:
private void addButton(String text) {
FrameLayout.LayoutParams layoutParams;
layoutParams = new FrameLayout.LayoutParams(
width,
lineHeightButton
);
layoutParams.leftMargin = leftMargin;
layoutParams.topMargin = getNewTop(lineHeightButton);
final Button button = new Button(_mainActivity);
button.setText(text);
button.setLayoutParams(layoutParams);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int top = button.getTop();
button.setTop(top + 40);
}
});
_frameLayout.addView(button);
}
修正:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrameLayout.LayoutParams layoutParams;
layoutParams = new FrameLayout.LayoutParams(
button.getWidth(),
button.getHeight()
);
layoutParams.leftMargin = leftMargin;
layoutParams.topMargin = button.getTop() + 40;
button.setLayoutParams(layoutParams);
}
});
答案 0 :(得分:1)
我认为你在setTop
方法中的问题。如果您想重新排列按钮位置,您需要:
1)获取LayoutParams
Button
2)设置你想要的位置值。
3)重新设置Layout Params
的{{1}}重置。
实际上你想要移动,但你只是一个按钮的顶部边框,而不是一个位置。