2011-08-28 6 views
2

그래서 나는 코드에서 임의의 시간에 단추를 추가하는 수평 모드에서 LinearLayout을 사용하고 공간을 모두 채우는 것을 좋아합니다.LinearLayout의 단추가 프로그래밍 방식으로 전체 공간을 채우지 못함

이 지금까지 내 현재 코드 :

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
              ViewGroup.LayoutParams.WRAP_CONTENT); 
layoutParams.gravity = Gravity.FILL; 

와 나는 여기에 내보기에 추가 :

linearLayout.addView(button, layoutParams); 

wrap_content 및 확장되지 않은 경우로이하는 모든 버튼을 추가 할 것입니다 버튼의 사용 가능한 공간을 채우는 너비가 왼쪽으로 정렬됩니다.

layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
              ViewGroup.LayoutParams.WRAP_CONTENT, 1); 

내가 다른 질문에 대한 답변에 따라 제로로 레이아웃 폭을 설정하려고 :이 경우 layoutParams이 어디

또한 linearLayout.setGravity(Gravity.FILL_HORIZONTAL);

linearLayout.setWeightSum(++weightSum); 
linearLayout.addView(button, layoutParams); 

을 시도했습니다.

다른 기술이 누락 되었습니까?

편집 : 나는 그것을 알아 냈다, 나는 match_parent 대신 wrap_content에있는 LinearLayout의 폭을 설정하는 것을 잊었다.

답변

3

Button 배경에 "여백"이 있으므로 버튼 사이에 공백이 없더라도 항상 간격이 있습니다. 이 여백이없는 자신의 이미지로 배경을 변경해야합니다.

수정 : 버튼의 무게를 사용해야합니다.

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      0, LayoutParams.WRAP_CONTENT); 
    params.weight = 1; 
    for(int i = 0; i < 5; ++i) { 
     Button button = new Button(this); 
     button.setText("Button" + (i + 1)); 
     linearLayout.addView(button, params); 
    } 
+0

간격은 괜찮지 만 문제는 단추가 사용 가능한 공간을 채우기 위해 확대되지 않으므로 모든 단추가 왼쪽 맞춤으로 보이게됩니다. – Jasoneer

+0

죄송합니다. 질문에 대한 오해를했습니다. 여기에 업데이트 된 답변이 있습니다. – Michael

+0

나는 너비를 0으로 설정하는 것을 포함하여 이미 이것을 시도한 것 같아. 작동하지 않는다. ( – Jasoneer

관련 문제