2016-04-01 5 views
2

ダイナミックな線形レイアウトでデータを表示したいが問題は4列あり、1列目のヘッダーは静的で残りの3はダイナミックです。ヘッダーのダイナミックを設定する方法を知っているのは、スタティックとダイナミックの両方をシングルレイアウトで設定する方法です。 マイコードスタティックとダイナミックの両方のテキストをプログラムで1つの線形レイアウトに設定する方法

private void addSizeGuideTable (ProductSizingDetail productSizingDetail){ 
    for (int i = 0; i < productSizingDetail.getSizeGuideList().size(); i++) { 
     SizeGuides sizeGuides = productSizingDetail.getSizeGuideList().get(i); 
     if (i == 0) { 
      addColumn(sizeGuides, true, false); 
     } else if (i == productSizingDetail.getSizeGuideList().size() - 1) { 
      addColumn(sizeGuides, false, true); 
     } else { 
      addColumn(sizeGuides, true, true); 
     } 
    } 
} 

private void addColumn(SizeGuides sizeGuides, boolean rightBorder, boolean leftBorder) { 
    LinearLayout linearLayout = new LinearLayout(this); 
    linearLayout.setOrientation(LinearLayout.VERTICAL); 
    linearLayout.setBackgroundColor(Color.parseColor("#d8d8d8")); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1); 
    linearLayout.setLayoutParams(params); 
    if (rightBorder && leftBorder) { 
     linearLayout.setPadding(1, 0, 1, 0); 
    } else if (rightBorder && !leftBorder) { 
     linearLayout.setPadding(0, 0, 1, 0); 
    } else { 
     linearLayout.setPadding(1, 0, 0, 0); 
    } 

    addHeaders(sizeGuides, linearLayout); 
    addRow(sizeGuides, linearLayout); 

    ((LinearLayout) findViewById(R.id.layout_size_guide)).addView(linearLayout); 
} 

private void addHeaders(SizeGuides sizeGuides, LinearLayout linearLayout) { 
    TextView tv = new TextView(this); 
    tv.setText(sizeGuides.getDimension()); 
    tv.setBackgroundColor(Color.parseColor("#f8f8f8")); 
    tv.setSingleLine(); 
    tv.setGravity(Gravity.CENTER); 
    tv.setPadding(0, 10, 0, 10); 
    tv.setTypeface(TypeFaceProvider.heavy(this)); 
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 0, 0, 1); 
    tv.setLayoutParams(params); 
    linearLayout.addView(tv); 
} 

private void addRow(SizeGuides sizeGuides, LinearLayout linearLayout) { 
    for (int i = 0; i < sizeGuides.getDimensionList().size(); i++) { 
     DimensionItem dimension = sizeGuides.getDimensionList().get(i); 
     TextView tv = new TextView(this); 
     if(dimension.getDimensionUnit().equalsIgnoreCase("INCH")) { 
      tv.setText(dimension.getDimensionValue()+"\" "); 
     }else{ 
      tv.setText(dimension.getDimensionValue()); 
     } 
     tv.setBackgroundColor(Color.parseColor("#f8f8f8")); 
     tv.setSingleLine(); 
     tv.setGravity(Gravity.CENTER); 
     tv.setPadding(0, 10, 0, 10); 
     tv.setTypeface(TypeFaceProvider.light(this)); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     if (i == sizeGuides.getDimensionList().size() - 1) { 
      params.setMargins(0, 1, 0, 0); 
     } else { 
      params.setMargins(0, 1, 0, 1); 
     } 
     tv.setLayoutParams(params); 
     linearLayout.addView(tv); 
    } 
} 
+0

最初の列ヘッダーが静的であるとすると、サイズを変更したくないということになりますか?その列全体が静的であることを望みますか?またはちょうど幅? –

答えて

0

カウントを使用してヘッダーを追加できます。あなたのprivate void addColumn(SizeGuides sizeGuides, boolean rightBorder, boolean leftBorder)

if(headerSetupCounter == 0) 
    addHeaders(YourCustomSizeGuide, linearLayout); 
else 
    addHeaders(sizeGuides, linearLayout); 

headerSetupCounter++; 

private static headerSetupCounter =0; 

(あなたがそれを参照するようまたは静的)また、あなたが列をチェックし、あなたの addSizeGuideTableでカスタムサイズ設定を実装することができます。

if (i == 0) { 
    // addColumn(sizeGuides, true, false); 
    // Implement customised "static" column.