2016-06-30 80 views
1

我有一個在.xml文件中定義的表,但行和標題必須動態添加。我在填充寬度方面存在問題,在水平和垂直方向上使用表格行。我試過了stretchColumns參數,但它沒有幫助。什麼是最好的方式來做到這一點?如何在Android中將TableRow寬度設置爲max?

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

     TableRow headerRow = new TableRow(this); 

     JSONObject obj; 

     obj = new JSONObject(loadJSONFromAsset()); 

     JSONArray records = obj.getJSONArray("tests"); 

     ArrayList<String> headers = new ArrayList<>(); 
     headers.add("Header 1"); 
     headers.add("Header 2"); 
     headers.add("Header 3"); 
     headers.add("Header 4"); 
     headers.add("Header 5"); 

     for(int i = 0; i < headers.size(); i++) { 
      TextView header = new TextView(this); 
      header.setText(headers.get(i)); 
      header.setTextColor(Color.WHITE); 
      header.setBackgroundColor(Color.rgb(24, 116, 205)); 
      header.setPadding(15, 15, 15, 15); 
      header.setTextSize(20); 
      header.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 

      header.setMaxLines(1); 
      headerRow.addView(header); 

     } 

     table.addView(headerRow); 

和XML

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


<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <HorizontalScrollView 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"> 

      <TableLayout 
       android:id="@+id/testList" 
       android:layout_height="match_parent" 
       android:layout_width="wrap_content"> 

      </TableLayout> 
     </HorizontalScrollView> 
    </ScrollView> 

</LinearLayout> 

</GridLayout> 
+0

由於您的表格在滾動視圖內,因此它沒有寬度和高度的限制。因此無法確定哪個是* max *寬度。你只能手動設置 –

+0

@VladMatvienko如何做到這一點沒有滾動視圖? – Sheppard25

+0

我沒有說你不需要scrollView就可以做到。你需要決定哪個寬度是* max *。它是一些確切的值,如100dp,或者它是屏幕寬度,還是什麼? –

回答

0

嘗試這種方式。以下將確保TableRow對齊到完整的可用寬度。

基礎組件後,把你的TableLayout在XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/mainLL" 
    android:orientation="vertical"> 
<TableLayout 
      android:id="@+id/tableLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 
</LinearLayout> 

現在,在你的邏輯,你可以根據從響應項目的數量增加。這應該在for循環中。

for(int i = 0; i < leftComponent.size(); i++) 
    { 
      //Table Layout parameters 
      TableRow.LayoutParams textViewParam = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,1.0f); 
      TableLayout tableLayout = (TableLayout) view.findViewById(R.id.fenceTableLayout); 
      TableRow trHead = new TableRow(context); 
      LayoutParams tableRowParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
      trHead.setLayoutParams(tableRowParams); 

      TextView nameHead = new TextView(context); 
      nameHead.setText(leftComponent[i]); 
      nameHead.setLayoutParams(textViewParam); 
      nameHead.setGravity(Gravity.CENTER); 
      trHead.addView(nameHead); 

      TextView detailHead = new TextView(context); 
      detailHead.setText(rightComponent[i]); 
      detailHead.setGravity(Gravity.CENTER); 
      detailHead.setLayoutParams(textViewParam); 

      trHead.addView(detailHead); 
      tableLayout.addView(trHead); 

    } 

您可能需要根據您的要求進行定製。

相關問題