2014-09-15 6 views
0

단추 테이블을 표시해야하는 조각을 만들었습니다. 테이블 레이아웃을 사용하여 테이블을 만들었습니다. 그러나 버튼 테이블은 조각에 표시되지 않습니다. 이 코드와 관련된 문제점은 무엇이며 어떻게 극복 할 수 있습니까 ???테이블 레이아웃이 조각에 표시되지 않습니까?

public void onViewCreated (뷰 뷰, Bundle savedInstanceState) { super.onViewCreated (view, savedInstanceState); ArrayList buttons = 새 ArrayList();

ScrollView sv = new ScrollView(this.getActivity()); 

    //Set a TableLayout to add buttons 
    TableLayout tl= new TableLayout(getActivity()); 

    LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 

    tl.setLayoutParams(params); 
    tl.setOrientation(TableLayout.HORIZONTAL); 

    for(int i=0;i<5;i++){ 
     TableRow row=new TableRow(this.getActivity()); 
     LayoutParams paramrow = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
     row.setLayoutParams(paramrow); 
     for(int j=0;j<2;j++){ 
      Button button = new Button(getActivity()); 
      button.setText("testing"); 
      button.setPadding(5, 5, 5, 5); 
      LayoutParams parab = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      button.setLayoutParams(parab); 
      row.addView(button); 
      buttons.add(button); 
     } 
     tl.addView(row); 
    } 
    sv.addView(tl); 
} 
+0

프로그래밍 방식으로 뷰를 만드는 특별한 이유가 있습니까? –

+0

예. 버튼 수는 데이터베이스의 테이블로 결정됩니다. – Arachchi

답변

0

두 개 이상의 장소에서 잘못된 유형의 LayoutParams를 사용 중입니다. 뷰는 해당 컨테이너에 해당하는 LayoutParams 유형을 사용해야합니다. 따라서 TableLayout에 직접 포함 된 뷰 (즉, TableRows)는 TableLayout.LayoutParams을 사용해야합니다. TableRows에 포함 된 뷰 (이 경우 버튼)는 TableRow.LayoutParams을 사용해야합니다. 마지막으로, TableLayout은 ScrollView에 있으므로 ScrollView.LayoutParams을 사용해야합니다. 실제로는 FrameLayout.LayoutParams입니다. ScrollView가 FrameLayout을 확장하기 때문에.

Scragview를 Fragment 's View에 추가하지 않는 것으로 보입니다. 레이아웃 xml에서 ScrollView와 TableLayout을 정의하고 onCreateView()에이 레이아웃을 부 풀링하고 TableRows와 Buttons와 같이 필요한 것만 동적으로 만들면 더 좋습니다.