2012-07-25 74 views
7

我需要以編程方式創建一個按鈕,並使其在居中佈局上,水平和垂直。我試着用下面的代碼:Android:如何以編程方式創建中心按鈕?

LinearLayout ll = (LinearLayout)findViewById(R.id.layoutItem); 
Button b = new Button(this);   
b.setBackgroundDrawable(getResources().getDrawable(R.drawable.button)); 
b.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); 
b.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL); 
ll.addView(b); 

但它不工作。按鈕在左上方出現。

有關如何解決此問題的任何線索?

非常感謝。

+0

嘗試設置LinearLayout的'LayoutParams'而不是'Button'本身的'LayoutParams' – DroidBender 2012-07-25 19:41:14

+0

LinearLayout的params通過XML設置。如果我沒有設置按鈕的參數,它將被填充以填充父項。 – 2012-07-25 19:43:11

+0

爲什麼不把它放在XML文件中? – JuiCe 2012-07-25 19:51:24

回答

18

我會做這樣的事情:

LinearLayout.LayoutParams ll = (LinearLayout.LayoutParams)b.getLayoutParams();  
ll.gravity = Gravity.CENTER; 
b.setLayoutParams(ll); 

看看是否能工程。

+0

作品。非常感謝。 – 2012-07-25 20:01:58

+0

沒問題...很高興我能幫到你。 :) – 0gravity 2012-07-25 20:02:40

10

或者你可以使用一個RelativeLayout爲你的父母View並執行以下操作:

this.testButton= (Button) this.findViewById(R.id.testButton); 

    RelativeLayout.LayoutParams testLP = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    testLP.addRule(RelativeLayout.CENTER_IN_PARENT); 

    this.testButton.setLayoutParams(testLP); 

可以爲RelativeLayout設定一些規則。

+0

謝謝。作爲替代解決方案,我會牢記這一點。上面的那個雖然很有魅力。 – 2012-07-25 20:02:41

+0

是的,我當時正在發佈答案。只是以爲我會發布這一個...因爲'RelativeLayout'給你更多的自由,以古怪的方式佈置你的'視圖'...而不是隻是垂直或水平。 – prolink007 2012-07-25 20:04:21

相關問題