2016-04-06 31 views
0

Hayatım boyunca, metnimin neden bu şekilde bittiğini anlayamıyorum. Java/android programlamaya yeni geldim, bu yüzden cevap bana açık görünmüyorsa özür dilerim. Bir statik satır ile tablelayout var ve geri kalan dinamik olarak programlanmış. Statik satır iyi görünüyor, ancak textviews her ikisi için ağırlık 1 olarak ayarlanmış olsa bile dinamik satır 1 textview sahiptir. Birisi bana ne yaptığımı/yapmamakta olduğumu aydınlatsın mı?Textview ve TableRow Ağırlıkları Düzgün Çalışmıyor Android

XML:

<TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="16dp" 
     android:id="@+id/alchemist_favored_class"> 

     <TableRow> 

      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="Race" 
       android:gravity="left" 
       android:padding="2dp" /> 

      <TextView 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:text="Bonus" 
       android:gravity="left" 
       android:padding="2dp" /> 

     </TableRow> 

    </TableLayout> 

Java:

//Populate Favored Class Options Table 
    TableLayout tableFC = (TableLayout) findViewById(R.id.alchemist_favored_class); 
    String[] fcr = getResources().getStringArray(R.array.alchemist_favored_class_race); 
    String[] fcd = getResources().getStringArray(R.array.alchemist_favored_class_detail); 

    TableRow.LayoutParams lp1 = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f); 
    TableRow.LayoutParams lp2 = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f); 

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

     TableRow tr = new TableRow(this); 
     TextView tvFCR = new TextView(this); 
     TextView tvFCD = new TextView(this); 

     tr.addView(tvFCR); 
     tvFCR.setText(fcr[i]); 
     tvFCR.setSingleLine(true); 
     tvFCR.setPadding(2,2,2,2); 
     tvFCR.setLayoutParams(lp1); 

     tr.addView(tvFCD); 
     tvFCD.setText(fcd[i]); 
     tvFCD.setPadding(2,2,2,2); 
     tvFCD.setLayoutParams(lp2); 

     //Add background color to every other row. 
     if ((i % 2) == 0) { 
      tr.setBackgroundColor(Color.parseColor("#EEEEEE")); 
     } 

     tableFC.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT)); 

    } 

Sonuç:

Imgur

+0

Neden özel bir satır görünümü ile 'ListView' kullanmıyorsun? Yaptığınız şeyden çok daha kolay olurdu ... – margabro

+0

Ebeveyn bize bir kaydırma görünümü sunuyor. Kaydırma görünümünde liste görünümü hem kaydırılabilir hem de garip olmaz mıydı? – Flakpanda

cevap

0
böyle

koy şey -

tableFC.setStretchAllColumns(true); 

Bu yardımcı olur umarız!

+0

Sorunu çözmediniz. Resimde hala aynı sonuç var. – Flakpanda

+0

XML aracılığıyla tek bir 'TableLayout' yaratmak ve daha sonra iki farklı' TableLayout' yerine 'TableRow''u XML/dinamik olarak eklemek mümkün mü? –

0

Satırdaki ilk metin görünümündeki ağırlığın kaldırılması sorunu giderdi ve şimdi istediğiniz gibi görüntüleniyor.

Image