2016-01-29 77 views
-1

創建按鈕陣列編程我正在學習Android和我試圖創建按鈕的數組,我通過以下方式應用:在android系統

LinearLayout answer_layout = (LinearLayout)findViewById(R.id.answer_layout); 
    idCount = answer_layout.getId() + 1000; 

    for(int i = 0 ; i<letters.length ; i++) 
    { 
     Button b = new Button(this); 
     b.setText(letters[i]); 
     b.setTypeface(null, Typeface.BOLD); 
     b.setBackgroundResource(R.drawable.puzzletilebg); 
     b.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15); 
     b.setIncludeFontPadding(false); 
     b.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
     b.setId(idCount + i); 
     b.setTag(Integer.valueOf(i)); 
     bLetters[i] = b; 
     answer_layout.addView(b); 

    } 
} 

當我運行這段代碼,我能夠根據字符串的長度值得到一排按鈕。我的問題是按鈕顯示拉伸,當長度值超過7,按鈕不會出現。對於這個問題,我嘗試實施這裏建議的方法(How do I programmatically add buttons into layout one by one in several lines?),但我沒有得到任何結果。我必須使用哪些參數來將按鈕的形狀製作爲完美的方形,並確保它們對於所有屏幕尺寸都具有相同的尺寸?我的按鈕背景可繪製尺寸是50x50。

+0

你能解決這個問題嗎? –

+0

你解決了嗎? –

回答

0

如果你想有一個完美的正方形變化

LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 

LinearLayout.LayoutParams(50, 50); 

而且OFC如果您linearLayour是水平的按鈕將在dissapear 屏幕邊緣。 您可以使用網格佈局,而不是LinearLayout中,但是如果你想要的東西喜歡的LinearLayout我建議:FlowLayout

例如:

enter image description here 最後編輯:對不起,是不是AutoFitLayout是我的FlowLayout編輯答案;

解決您的問題?

+0

謝謝,這解決了我的方形問題 – nexus

+0

嘿沒有問題;),你嘗試過自動佈局? –

+0

非常感謝Fabio :) flowlayout完美運作 – nexus

0

對於未出現超過7個按鈕的問題,您可以嘗試將您的LinearLayout answer_layout包裝在ScrollView或Horizo​​ntalScrollView中,以便在xml文件中進行水平滾動。

並以編程方式更改按鈕的寬度和高度,您可以嘗試從現有的帖子回答https://stackoverflow.com/a/11294075/1331743

0

嘗試用

b.setWidth(50); 
b.setHeight(50); 

的數字是像素,所以也許你不得不DP轉換爲像素。