2011-11-01 30 views
2

A View有一个getLeft()方法,但我如何setLeft设置视图的位置,因为用户拖动他们的手指

我想这样做,以便在用户在屏幕上横向拖动手指时可以移动RelativeLayout。它与屏幕大小和宽度相同,所以它移动时需要移出屏幕边缘。

我已经尝试过各种动画类,但我不认为这是我在这种情况下想要的。

我针对手机而不是平板电脑,所以这需要为API级别上工作7

回答

0

我也不太清楚,如果这就是你要找的人,但没有setLeft()法或任何否则直接设置坐标。我会尝试得到LayoutParams并手动设置左侧;像这样:view.getLayoutParams().left = 123我不确定这会工作,因为它可能取决于视图所在的ViewGroup类型(即LinearLayout)。祝你好运!

+0

哦,您可能还想在设置坐标后尝试使用'view.requestLayout()'来刷新它。 – Brian

+0

'getLayoutParams()'返回一个'ViewGroup.LayoutParams'对象,遗憾的是没有'left'属性 –

+1

你的视图是什么类型的ViewGroup?的LinearLayout?如果它是尝试类型转换它'(LinearLayout.LayoutParams)getLayoutParams()' – Brian

4

我通常会用View.offsetTopAndBottom()和/或View.offsetLeftAndRight()做这样的事情,并用每次触摸/滚动更新来调整视图位置。另外请确保您尝试移动的View不在布局内,这会限制您的操作。

HTH。

+0

谢谢,这工作,但正在移动的'RelativeLayout'也调整大小,以便它仍然适合在屏幕的范围内。是否可以移动它,使其不会调整大小,而是移出屏幕边缘? –

+0

这可能是您在视图中设置的布局参数相对于其父项的产品。如果有东西被设置为'fill_parent'或'match_parent',它会尝试附加父视图的外边界,即使它移动。 – Devunwired

+0

我认为可能是这种情况,所以将宽度更改为'wrap_content'。 “RelativeLayout”仍然被调整大小以适合屏幕的范围。 –

相关问题