2017-08-15 78 views
0

我在Android中創建了一個動態TableLayout。問題是,列中存在不必要的空白。我想刪除它,我一直在更改代碼幾次,但結果令人驚訝。這是目前我能得到的最好的。在android中調整動態TableLayout的大小

TableLayout Image

正如你可以看到,有在頭的間隙,並且還行中如果行組成2+線。 我想讓第一列(這是項目)具有最長的寬度,而另一列只是用標題包裝內容。

這裏是XML

<TableLayout 
        android:id="@+id/tableDescription" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:stretchColumns="*"> 

        <TableRow 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:weightSum="4"> 

         <TextView 
          android:layout_width="@dimen/size0" 
          android:layout_height="match_parent" 
          android:layout_weight="1" 
          android:background="@drawable/cell_shape" 
          android:padding="@dimen/size5" 
          android:text="@string/items" /> 

         <TextView 
          android:layout_width="@dimen/size0" 
          android:layout_height="match_parent" 
          android:layout_weight="1" 
          android:background="@drawable/cell_shape" 
          android:padding="@dimen/size5" 
          android:text="@string/quantity" /> 

         <TextView 
          android:layout_width="@dimen/size0" 
          android:layout_height="match_parent" 
          android:layout_weight="1" 
          android:background="@drawable/cell_shape" 
          android:padding="@dimen/size5" 
          android:text="@string/unitPrice" /> 

         <TextView 
          android:layout_width="@dimen/size0" 
          android:layout_height="match_parent" 
          android:layout_weight="1" 
          android:background="@drawable/cell_shape" 
          android:padding="@dimen/size5" 
          android:text="@string/total" /> 
        </TableRow> 

       </TableLayout> 

這裏是使動態記錄,如果

private void init() { 

    // Array for item 
    String[] valuesItem = new String[] { 
      "Room asd", 
      "Room qwewq", 
      "Room kadskadskl", 
      "Room oeqwoeqwo", 
      "Room uuawuwauaw" }; 

    final ArrayList<String> listItem = new ArrayList<String>(); 
    for (int i = 0; i < valuesItem.length; ++i) { 
     listItem.add(valuesItem[i]); 
    } 

    // Array for quantity 
    String[] valuesQuantity = new String[] { 
      "1", 
      "1", 
      "2", 
      "1", 
      "2" }; 

    final ArrayList<String> listQuantity = new ArrayList<String>(); 
    for (int i = 0; i < valuesQuantity.length; ++i) { 
     listQuantity.add(valuesQuantity[i]); 
    } 

    // Array for price 
    String[] valuesPrice = new String[] { 
      "10", 
      "10", 
      "20", 
      "50", 
      "30" }; 

    final ArrayList<String> listPrice = new ArrayList<String>(); 
    for (int i = 0; i < valuesPrice.length; ++i) { 
     listPrice.add(valuesPrice[i]); 
    } 

    // Array for total 
    String[] valuesTotal = new String[] { 
      "10", 
      "10", 
      "40", 
      "50", 
      "60" }; 

    final ArrayList<String> listTotal = new ArrayList<String>(); 
    for (int i = 0; i < valuesTotal.length; ++i) { 
     listTotal.add(valuesTotal[i]); 
    } 

    for (int i = 0; i <valuesItem.length; i++) { 

     TableRow row= new TableRow(getActivity()); 
     TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT); 
     row.setLayoutParams(lp); 
     TextView item = new TextView(getActivity()); 
     TextView quantity = new TextView(getActivity()); 
     TextView price = new TextView(getActivity()); 
     TextView total = new TextView(getActivity()); 
     item.setText(valuesItem[i]); 
     quantity.setText(valuesQuantity[i]); 
     price.setText(valuesPrice[i]); 
     total.setText(valuesTotal[i]); 
     item.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       (getActivity().getResources().getDimensionPixelSize(R.dimen.size5)), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5)); 
     quantity.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5)); 
     price.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5)); 
     total.setPadding(getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5), 
       getActivity().getResources().getDimensionPixelSize(R.dimen.size5)); 
     item.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0)); 
     quantity.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0)); 
     price.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0)); 
     total.setWidth(getActivity().getResources().getDimensionPixelSize(R.dimen.size0)); 
     item.setBackgroundResource(R.drawable.cell_shape); 
     quantity.setBackgroundResource(R.drawable.cell_shape); 
     price.setBackgroundResource(R.drawable.cell_shape); 
     total.setBackgroundResource(R.drawable.cell_shape); 
     row.addView(item); 
     row.addView(quantity); 
     row.addView(price); 
     row.addView(total); 
     tableDynamic.addView(row); 
    } 

} 

對不起這有點凌亂的代碼。 謝謝!

回答

0

通過配置的LayoutParams每個TextView的

lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 5f); 
     item.setLayoutParams(lp); 
     lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 2f); 
     quantity.setLayoutParams(lp); 
     lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 1.5f); 
     price.setLayoutParams(lp); 
     lp = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT, 1.5f); 
     total.setLayoutParams(lp); 
解決