0

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

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

1 回答 1

1

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

LayoutParams1 )获取电流Button

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

3)返回重置Layout Paramsof Button

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

于 2013-11-08T10:32:42.283 回答