2011-03-08 4 views
0

첫 번째로 나는 안드로이드 개발에 처음이고 일부 겉보기에 쉬운 일은 나를 끝까지 초조하게 만든다. 이 질문에 대한 답변은 여기에 있습니다. Changing the checkbox size in Android 2.0 어떤 이유로 든 내 확인란 옆에 계속 표시되는 추가 공간이 있습니다 (아래 참조). 확인란 옆에있는이 여분의 공간을 제거하는 방법은 무엇입니까?

Space Next to checkboxes

가 지금은 1 폭을 설정하려고하고 그것을 표시되는 내용보다 짧은을하지 않습니다. 너비를 더 크게 설정하려고 시도했지만 크기를 더 크게 만들 수는 있지만 짧게 만들 수는 없습니다.

아래 코드를보고 내가 본 것을 알려주십시오.

TableLayout table = (TableLayout) findViewById(R.id.timeEntriesTable); 


     for (int i = 0; i < timeEntries.getLength(); i++) 
     { 
      Element element = (Element) timeEntries.item(i); 
      TableRow tr = new TableRow(this); 
      tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

      CheckBox box = new CheckBox(this); 
      box.setButtonDrawable(getResources().getDrawable(R.drawable.checkbox_off_background)); 
      box.setPadding(0,0,0,0); 
      box.setWidth(1); 
      box.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        CheckBox box = (CheckBox) v; 
        if (box.isChecked()) 
        { 
         box.setButtonDrawable(getResources().getDrawable(R.drawable.checkbox_on_background)); 
        } 
        else 
        { 
         box.setButtonDrawable(getResources().getDrawable(R.drawable.checkbox_off_background)); 
        } 

       } 
      }); 

      TextView dateBox = new TextView(this); 

      String dateText = element.getAttribute("date"); 
      dateBox.setText(dateText); 
      dateBox.setTextColor(Color.BLACK); 

      TextView customerBox = new TextView(this); 

      String customerName = element.getAttribute("customer"); 
      customerBox.setText(customerName); 
      customerBox.setTextColor(Color.BLACK); 

      TextView hoursBox = new TextView(this); 

      String hours = element.getAttribute("hours"); 
      hoursBox.setText(hours); 
      hoursBox.setTextColor(Color.BLACK); 

      TextView test = new TextView(this); 
      test.setTextColor(Color.RED); 
      test.setText("Test"); 

      tr.addView(box);     
      tr.addView(dateBox); 
      tr.addView(customerBox); 
      tr.addView(hoursBox); 



      table.addView(tr, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
     } 

감사합니다.

답변

2

그래서 다른 두 답변자의 입력 후 @adamp 및 @Phobos. 나는 나를 위해 일한 것을 우연히 발견했다. 이 문제를 추가하여

How to set (Text)View attributes programmatically?

는 :

TableRow.LayoutParams lp = new TableRow.LayoutParams(); 
      lp.width = 15; 
      lp.setMargins(3, 5, 0, 0); 
      lp.height = 15; 
tr.addView(box, lp); 

나는 정확히 내가 원하는 어떻게 셀을 조정할 수 있었다. 체크 박스 자체가 커지는 셀의 열이 커지는 것은 아니라는 것이 나에게는 매우 이상했다. 안드로이드에는 실제 셀이 없기 때문에보기와 크기를 사용하여 테이블을 생성하기 때문입니다.

프로그래밍 방식으로 LayoutParams를 프로그래밍 방식으로 설정 한 튜토리얼이나 그 어떤 것도 발견하지 못했습니다. 이 문제를 해결해 주셔서 감사합니다.

+3

질문에 대한 답변을 게시 해 주셔서 감사합니다. 나는 해결책을 찾은 후에 대답을하지 않고 떠나는 대신에 더 많은 사람들이 이것을하기를 바란다. +1 – Phobos

+1

문제 없습니다. 나는 여기 또는 다른 곳에서 답이없는 질문을 만났을 때 나는 싫어한다. 내 검색에서이 쟁점에 대한 양질의 정보가 부족한 것으로 인식되면서이 문제를 해결할 방법이 없었습니다. 바라건대 내가 내 머리카락을 꺼내는데 시간을 할애 해 다른 사람을 구할 수 있기를 바랍니다 :) – Roloc

+0

** 나는 해결책을 찾았습니다 **. – neevek

2

"Time Entries"헤더가 헤더 행의 자체 표 셀에 있고 그 아래에있는 확인란의 열이 같은 너비와 일치하는 것처럼 보입니다. 텍스트의 오른쪽 가장자리가 그 아래의 날짜와 어떻게 완벽하게 일치하는지 확인하십시오. 체크 박스의 layout_gravity는 기본값이 TOP|LEFT 일 가능성이 높으므로 셀의 왼쪽 상단에 배치됩니다.

머리글 행 또는 확인란의 layout_gravity를 변경하십시오.

+0

이렇게하면 오른쪽 경로로 나를 보냈습니다. 머리글 행과 관련하여 많은 부분이 있었고 크기를 조정하는 방법과 관련이 있다고 생각합니다. 내가 4 개 모두에 걸쳐 지도록 설정하면 약 절반으로 줄어들었지만 여전히 좋은 10-15 픽셀 공간이있었습니다. 그런 다음 레이아웃 매개 변수를 설정하려고 시도했지만 모두 사라졌습니다. 어느 날 나를 위해 일한 대답으로 인도합니다! http://stackoverflow.com/questions/3696843/how-to-set-textview-attributes-programmatically – Roloc

+1

좋아요!나중에 참조 할 수 있도록 "layout_"으로 시작하는 모든 XML보기 특성은 LayoutParams 특성입니다. 사용하는 LayoutParams 유형은 항상 상위 뷰에 따라 다릅니다. – adamp

+0

네가 설정할 수있는 것은 모두 match_parent 및 wrap_content ...라는 것을 알 수 있었기 때문에 매우 골칫거리였다. 그러나 내 자신의 인스턴스를 만들고 그것을 조정하는 것은 매우 상쾌했다. 도움에 다시 한번 감사드립니다. – Roloc

1

테이블 레이아웃은 당연히 모든 셀을 동일한 크기로 만들고 싶습니다. 하나 이상을 다른 크기로 만들려면 추가 매개 변수가 필요합니다. 당신의 세포가 (참) 테이블 객체에

table.setShrinkAllColumns을이 추가로

모든 여분의 공간을 축소하려면;

아니면 확인란을

table.setColumnShrinkable (INT columnIndex에, 부울 isShrinkable)입니다 단지 첫 번째 열을 축소하는

+0

나는 이것을 시도했는데 헤더 열이 모든 열을 가로 질러서 두 번째 열의 훨씬 작은 열이 아니라 축소되도록하기 때문에 작동하지 않는다고 생각한다. 그러나 ... +1이 있었기 때문에 내가 거기에 있었다는 것을 전혀 모르기 때문에 ... 감사합니다! – Roloc

+1

빈 셀, 제목, 빈 셀, 빈 셀을 사용하여 머리글 행을 테이블 행으로 만들 수 있습니다. 이렇게하면 제목에 영향을주지 않고 첫 번째 열을 축소 할 수 있습니다. – Phobos

+0

테이블 레이아웃에서 어떻게 공백 셀을 만드나요? 그냥 더미 텍스트 뷰 또는 뭔가 추가? – Roloc