0

을 존중하지 않습니다. 이것은 내가 사용하는 코드입니다 :프로그래밍 추가의 TableView 내가 <strong>TableLayout을</strong> 내가 프로그래밍 그 무게 "센터"입니다 수직 <strong>의 LinearLayout</strong>에 추가하려고 레이아웃 리소스로 정의되어 그 중력

LayoutInflater inflater = getLayoutInflater(); 
LinearLayout ll = (LinearLayout) findViewById(R.id.testLinearLayout); 
TableLayout myTable = (TableLayout) inflater.inflate(R.layout.table2x2, null); 
ll.addView(myTable); 

myTable에 대신 중심에있는의, 그것은 수직 중심으로 왼쪽으로 정렬있어 추가됩니다. 프로그래밍 방식으로 추가하는 대신 동일한 코드를 사용합니다. TableLayoutLinearLayout 가운데 중력을 존중합니다. 내가 뭔가를 놓치고 있어야한다는 것을 알고 있지만, 나는 그것을 알아낼 수 없다.

있는 LinearLayout : 그것이 수평 레이아웃의 일부이기 때문에

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:id="@+id/testLinearLayout" 
    android:layout_weight="1" 
    android:gravity="center"> 
</LinearLayout> 

그것은 무게를 가지고있다.

TableLayout을 :

<?xml version="1.0" encoding="utf-8"?> 

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" android:layout_height="wrap_content"> 

<TableRow 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="\" 
     android:id="@+id/textView2x2_o" 
     android:gravity="center" /> 

    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="0" 
     android:id="@+id/textView2x2_c0" 
     android:gravity="center" /> 

    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="1" 
     android:id="@+id/textView2x2_c1" 
     android:gravity="center" /> 

</TableRow> 

<TableRow 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="0" 
     android:id="@+id/textView2x2_r0" 
     android:gravity="center" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="0" 
     android:id="@+id/textView2x2_0" 
     android:gravity="center" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="0" 
     android:id="@+id/textView2x2_1" 
     android:gravity="center" /> 

</TableRow> 

<TableRow 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     android:text="1" 
     android:id="@+id/textView2x2_c2" 
     android:gravity="center" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="0" 
     android:id="@+id/textView2x2_4" 
     android:gravity="center" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:text="0" 
     android:id="@+id/textView2x2_5" 
     android:gravity="center" /> 

</TableRow> 

</TableLayout> 

답변

0

당신은 부풀려 방법에 루트를 통과하지 않을

TableLayout myTable = (TableLayout) inflater.inflate(R.layout.table2x2, null); 

될해야

TableLayout myTable = (TableLayout) inflater.inflate(R.layout.table2x2, ll, false); 
여기

더 많은 정보는 : http://www.doubleencore.com/2013/05/layout-inflation-as-intended/

+0

의미가 있습니다 ! LinearLayout을 두 개의 인수 메소드를 사용하여 루트로 지정하려고 시도했지만 응용 프로그램이 손상되었습니다. 그 설명에 대한 링크를 특별히 고맙습니다! – cthulhufhtagn

+0

아마 세 번째 매개 변수로 true를 전달했습니다. 세 번째 매개 변수는 뷰를 루트에 첨부할지 여부를 알려줍니다. 이를 true로 설정하고 뷰를 추가하려고하면 뷰에 이미 상위가 있음을 알리는 예외가 발생합니다. 즉, true를 전달하면 addView를 제거해야하며, false를 전달하면 addView를 호출해야합니다. –

관련 문제