Android:移动按钮不起作用?

时间:2013-11-08 10:24:58

标签: android

我想为一个按钮添加一个监听器,它可以改变这个按钮的位置。我试图用这个片段来解决这个问题但是没有像我预期的那样工作。

    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);
        }
    });

1 个答案:

答案 0 :(得分:1)

我认为你在setTop方法中的问题。如果您想重新排列按钮位置,您需要:

1)获取LayoutParams

的当前Button

2)设置你想要的位置值。

3)重新设置Layout Params的{​​{1}}重置。

实际上你想要移动,但你只是一个按钮的顶部边框,而不是一个位置。