답변:
TableLayout.LayoutParams
다음과 같이 사용해야 합니다.
TextView tv = new TextView(v.getContext());
tv.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
마지막 매개 변수는 무게입니다.
TextView tv = (TextView) findViewById(R.id.your_textview_inside_the_linearlayout); tv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.1f));
TableRow.LayoutParams
대신을 사용해야합니다 TableLayout.LayoutParams
. @Dorje의 답변을 참조하십시오.
대답은 LinearLayout.LayoutParams 또는 다른 LayoutParam이 아닌 TableRow.LayoutParams를 사용해야한다는 것입니다.
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
다른 LayoutParam은 서로 바꿔 사용할 수 없으며 잘못된 것을 사용하면 아무 일도 일어나지 않는 것 같습니다. 텍스트 뷰의 부모는 테이블 행이므로 다음과 같습니다.
http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html
LayoutParams
TableRow.LayoutParams
너무 나를 위해 일을했다
이전 답변에서 가중치 는 새로운 SomeLayoutType.LayoutParams 객체의 생성자로 전달됩니다. 여전히 많은 경우 기존 객체를 사용하는 것이 더 편리합니다. 관심이없는 매개 변수를 처리하지 않아도됩니다.
예를 들면 :
// Get our View (TextView or anything) object:
View v = findViewById(R.id.our_view);
// Get params:
LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams) v.getLayoutParams();
// Set only target params:
loparams.height = 0;
loparams.weight = 1;
v.setLayoutParams(loparams);
TextView txtview = new TextView(v.getContext());
LayoutParams params = new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
txtview.setLayoutParams(params);
1f는 중량 = 1로 표시되고; 2f 또는 3f를 줄 수 있습니다.보기는 공간으로 인코딩을 이동합니다.
그 레이아웃에서 레이아웃 매개 변수를 설정하십시오.
param 변수 만들기
android.widget.LinearLayout.LayoutParams params = new android.widget.LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
1f는 가중치 변수입니다
위젯이나 레이아웃을 다음과 같이 설정하십시오.
TextView text = (TextView) findViewById(R.id.text);
text.setLayoutParams(params);
TextView text = new TextView(v.getContext());
text.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 1f));
(또는)
TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);
1f는 중량 = 1로 지칭되고; 필요에 따라 2f 또는 3f를 줄 수 있습니다.보기는 공간으로 인코딩을 이동합니다. 선형 레이아웃에서 뷰 간 거리를 지정하려면 "LinearLayout"에 가중치 를 사용 하십시오 .
LinearLayout ll_Outer= (LinearLayout ) view.findViewById(R.id.linearview);
LinearLayout llInner = new LinearLayout(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
llInner.Orientation = Orientation.Horizontal;
llInner.WeightSum = 2;
ll_Outer.AddView(llInner);
이것은 나를 위해 일하고, 그것이 당신에게도 효과가 있기를 바랍니다.
상위 뷰의 LayoutParams를 먼저 설정하십시오.
myTableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.FILL_PARENT));
그런 다음 TextView (자식)로 설정하십시오.
TableLayout.LayoutParams textViewParam = new TableLayout.LayoutParams
(TableLayout.LayoutParams.WRAP_CONTENT,
TableLayout.LayoutParams.WRAP_CONTENT,1f);
//-- set components margins
textViewParam.setMargins(5, 0, 5,0);
myTextView.setLayoutParams(textViewParam);
4 시간 동안 고군분투 한 후 마지막 으로이 코드는 저에게 효과적이었습니다.
3 열이 행에 있습니다.
TextView serialno = new TextView(UsersActivity.this);
TextView userId = new TextView(UsersActivity.this);
TextView name = new TextView(UsersActivity.this);
serialno.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));
userId.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));
name.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f));
나는 매우 비슷한 해결책으로 상당히 어려움을 겪었습니다 .TableRow에 두 개의 버튼이 있고 각 버튼은 화면 너비의 절반입니다. 어떤 이유로 든 왼쪽 버튼은 항상 너비의 약 70 %이고 오른쪽 버튼은 30 %입니다. table_layout.setStretchAllColumns (true)를 호출해도 효과가 없었으며 버튼의 너비를 화면의 절반으로 설정하거나 레이아웃 가중치를 설정하지 않았습니다.
나는 TableRows,에있는 LinearLayout 중첩 된로 결국 해결책 않은 계정에 버튼 '폭의 값을.
TableLayout layout = new TableLayout(this);
TableRow top_row = new TableRow(this);
left_button = styleButton();
right_button = styleButton();
LinearLayout toprow_layout = new LinearLayout (this);
toprow_layout.setOrientation(LinearLayout.HORIZONTAL);
toprow_layout.addView (left_button);
toprow_layout.addView(right_button);
toprow.addView(top_layout);
layout.addView(top_row)
private Button styleButton() {
Button btn = new Button (this);
android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
btn.setWidth((int)(display.getWidth()/2)); // set width to half
btn.setHeight(((int)display.getHeight()/6)); // set height to whatevs
btn.setText("foo");
return btn;
}
layout_width=fill_parent
설정하고 그 후에 layout_weight=1
button1과 button2 모두를 설정하는 것 입니다. fill_parent 및 layout_weight = 1 인 모든 요소는 인플레이션시 크기가 동일합니다.