2016-04-01 4 views
2

Ich möchte Daten im linearen Layout anzeigen, die dynamisch ist, aber das Problem ist, ich habe 4 Spalten, von denen 1. Spaltenkopf ist statisch und Rest 3 sind dynamic.I wissen, wie man Header dynamisch setzt, was ich wissen möchte ist, wie man sowohl statisch als auch dynamisch in einem einzelnen Layout setzt. Mein CodeWie Sie Text statisch und dynamisch in einem einzigen linearen Layout programmgesteuert setzen

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

Wenn Sie sagen, dass die erste Spaltenüberschrift statisch ist, meinen Sie, dass die Größe nicht geändert werden soll? Und Sie möchten, dass die gesamte Spalte statisch ist? oder nur die Breite? –

Antwort

0

könnten Sie einen Zähler verwenden, um die Kopfzeile hinzuzufügen.

private static headerSetupCounter =0; 

In Ihrem private void addColumn(SizeGuides sizeGuides, boolean rightBorder, boolean leftBorder)

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

headerSetupCounter++; 

Sie auch Ihre individuelle Dimensionierung implementieren könnte (oder statisch, wie Sie sich darauf beziehen) in Ihrem addSizeGuideTable, wo Sie für die Spalte überprüfen.

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