2014-02-07 7 views
0

나는 표시 할 항목을 추가하고 모든 것이 올바르게 진행되는 TableRow를 가지고 있습니다. 그럼에도 불구하고 레이아웃 수정 버튼을 추가하려면 페인트되지 않습니다. 코드는 다음과 같습니다.ImageButton 레이아웃을 수정하는 방법

ImageButton botonBorrar = new ImageButton(this); 

botonBorrar.setImageResource(R.drawable.discard_light); 

LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT, 
    LinearLayout.LayoutParams.MATCH_PARENT); 

buttonParams.setMargins(15, 10, 10, 10); 
botonBorrar.setLayoutParams(buttonParams); 

myRow.addView(botonBorrar); 

무엇이 잘못 될 수 있습니까? 나는 이것에 관해 많은 포스트를 따라 갔다. 그러나 아무것도 나의 문제를 고치는 것처럼 보인다.

미리 감사드립니다.

답변

1

LinearLayout.LayoutParams 대신 TableRow.LayoutParams를 사용해야한다고 가정합니다.

TableRow의 하위 항목에는 XML 파일의 layout_width 및 layout_height 속성을 지정할 필요가 없습니다. (http://developer.android.com/reference/android/widget/TableRow.html)

그래서 먼저보기에 버튼을 추가 할 수 있습니다 후 이미 생성의 LayoutParams을 얻고 수정할 :

myRow.addView(botonBorrar); 
TableRow.LayoutParams buttonParams = (TableRow.LayoutParams)bottonBorrar.getLayoutParams(); 
buttonParams.setMargins(15, 10, 10, 10); 
//botonBorrar.setLayoutParams(buttonParams); - if you add button to the view, you do not have to set modified layout params explicitly. 
+0

덕분에 많이, 그것은했다!. 그럼에도 불구하고 내가 행에 설정 한 높이 매개 변수를 유지하는 것 같지 않습니다. 내가 행을 채우는 데 사용하는 텍스트 뷰의 하나의 높이를 설정하여 그것을 할 수 있지만, \t \t TableLayout.LayoutParams tableRowParams = 새로운 TableLayout.LayoutParams에게 ( \t \t \t \t TableLayout.LayoutParams.MATCH_PARENT을 설정하여 얻을 관리 할 수 ​​없습니다 , \t \t \t \t100); 그냥 100 픽셀 높이를 무시합니다. – kankamuso

+1

글쎄, 문제는 NEW layoutparams에 있다고 생각합니다. 레이아웃에 뷰를 추가하면 해당 뷰의 레이아웃 매개 변수가 자동으로 생성되고 시스템에 맞게 올바르게 생성됩니다. 이렇게 자동으로 생성 된 레이아웃 매개 변수를 수정하면 레이아웃을 변경할 수 있습니다. 나는 다음 라인 테스트 : \t \t TableRow.LayoutParams buttonParams2 = (TableRow.LayoutParams) botonBorrar2 \t \t \t \t .getLayoutParams를(); \t \t buttonParams2.height = 800; 그리고 효과가있었습니다. –

+1

고마워요. 마가리타. 나는 지금 그것을 이해하고 있다고 생각한다. 기존 레이아웃을 가져 와서 덮어 쓰지 않는 것만으로도 문제가됩니다. – kankamuso

관련 문제