1

我想在单击布局中的按钮时将 LinearLayout 一半移出屏幕,当在移出布局的一半上单击按钮时,它会返回到其原始位置。

我知道这可以简单地通过使用翻译布局和将布局的 x 位置从 0% 移动到 -50% 并做相反的事情来完成。

我面临的问题是:

  • 尽管布局被绘制了一半,但实际上并没有移动,即布局被绘制了,但其子项的坐标(用于接受点击)并未相应地移动到新位置。

有什么方法可以移动布局属性。我希望当第二次单击最初单击以将其移出一半的按钮时,将布局向后滑动。

4

1 回答 1

0

This should give you a go:

@SuppressWarnings("unused")
private void setLeftMargin(int value) {
    ((LinearLayout.LayoutParams)myLinearLayout.getLayoutParams()).leftMargin = value;
    myLinearLayout.requestLayout();
}

Usage:

ObjectAnimator.ofInt(this, "leftMargin",
            0, -1 * halfWidth).setDuration(ANIM_DURATION).start();

and

ObjectAnimator.ofInt(this, "leftMargin",
            -1 * halfWidth, 0).setDuration(ANIM_DURATION).start();

Read @damian's comment for animation libraries.

于 2013-02-28T12:49:34.753 回答