2011-04-13 156 views
6

我在XML文件的AbsoluteLayout中有一個按鈕。從那裏我可以設置按鈕的(x,y)位置。更改按鈕的位置

如何以編程方式獲取並設置按鈕的(x,y)座標?

謝謝大家。

回答

9

您必須獲得對你的引用按鈕,例如通過調用findViewById()。當你得到這個按鈕的引用時,你可以用按鈕設置x和y的值。 setX()和按鈕。 setY()

.... 
Button myButton = (Button) findViewById(R.id.<id of the button in the layout xml file>); 
myButton.setX(<x value>); 
myButton.setY(<y value>); 
.... 
+0

它說的方法setX的(INT)是未定義的類型按鈕。 – WISH 2011-04-13 09:37:43

+0

恩,這很奇怪。 Button類擴展了View類,你可以在這裏找到兩個方法setX()和setY()。試試這個:View myButton =(View)findViewById(R.id. <佈局xml文件中的按鈕ID>); – Flo 2011-04-13 09:42:01

+0

我們有所有屬性的方法,但dnt有任何方法來設置按鈕或其他小部件的x和y。 :( – WISH 2011-04-13 09:43:48

5

你要找的答案是LayoutParams。首先,我建議而不是使用AbsoluteLayout - 它已棄用 - 並使用其他的東西,也許是一個FrameLayout,並只使用左邊距和上邊距作爲您的x和y偏移量。

然而,要回答你的問題:

Button button = (Button)findViewById(R.id.my_button); 
AbsoluteLayout.LayoutParams absParams = 
    (AbsoluteLayout.LayoutParams)button.getLayoutParams(); 
absParams.x = myNewX; 
absParams.y = myNewY; 
button.setLayoutParams(absParams); 

或者:

Button button = (Button)findViewById(R.id.my_button); 
button.setLayoutParams(new AbsoluteLayout.LayoutParams(
    AbsoluteLayout.LayoutParams.FILL_PARENT, AbsoluteLayout.LayoutParams, 
    myNewX, myNewY));