2013-04-13 47 views
0

我遇到的主要問題是讓我的程序以相同的寬度並排顯示4個按鈕。我嘗試了一堆組合,花了一個多小時在StackOverflow搜索解決方案上,沒有任何運氣。我怎樣才能讓垂直界面上的同一行中的這四個按鈕都具有相同的高度?Android以編程方式創建四個均勻分佈重量的按鈕

這是我到目前爲止沒有運氣。因爲寬度無論是按鈕過大,過小,或隱藏0

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LinearLayout layout = new LinearLayout(this); 
     layout.setOrientation(LinearLayout.VERTICAL); 
     layout.setLayoutParams(new LayoutParams(
       LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 
     layout.setWeightSum(1); 

     Button redButton = new Button(this); 
     redButton.setText("Red"); 
     LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
       0, 
       LayoutParams.WRAP_CONTENT, 
       0.25f); 
     redButton.setWidth(0); 
     redButton.setLayoutParams(p); 
     layout.addView(redButton); 

     Button greenButton = new Button(this); 
     greenButton.setText("Green"); 
     greenButton.setLayoutParams(p); 
     greenButton.setWidth(0); 
     layout.addView(greenButton); 

     Button blueButton = new Button(this); 
     blueButton.setText("Blue"); 
     blueButton.setLayoutParams(p); 
     blueButton.setWidth(0); 
     layout.addView(blueButton); 

     Button yellowButton = new Button(this); 
     yellowButton.setText("Yellow"); 
     yellowButton.setLayoutParams(p); 
     yellowButton.setWidth(0); 
     layout.addView(yellowButton); 

     setContentView(layout); 
    } 
+2

你爲什麼不用這個xml? –

+0

試圖做一些不同的事情。我已經知道如何用XML實現它,但是我想用編程方式來處理我正在處理的應用程序的佈局,這將需要一些動態佈局的東西。 – NadeMaster

回答

1

怎麼樣得到了器件的分辨率的屏幕使用這樣的事情:

Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int screen_width = d.getWidth(); 
int screen_height = d.getHeight(); 

,然後說,如果你想4每個按鍵有相同的寬度翻過屏幕從你的例子greenButton.setWidth(screen_width/4);

,並呼籲爲每個按鈕做到這一點...相同的寬度散佈在任何尺寸的屏幕分辨率都動態地完成!

+0

只是一個參考獲取顯示寬度和高度是從這個SO線程獲取http://stackoverflow.com/questions/2902640/android-get-the-screen-resolution-pixels-as-integer-values(所以我不知道如果它真的有效) – brendosthoughts

+0

這是一個不推薦的方法,這是不是意味着它將在未來的版本中被刪除? – NadeMaster

+0

是的,它確實意味着,檢查出的Android開發網頁,我相信他們已經實現了一種新的方式來做同樣的功能(這只是一個如何做到這一點的例子)...獲取顯示設置每個按鈕的寬度到1/4的寬度 – brendosthoughts