在TableRow中设置边距和背景颜色

时间:2014-10-25 21:07:48

标签: java android android-layout

在TableRow上以编程方式设置margin 背景颜色时,我遇到了一个奇怪的问题。 我已经阅读了关于保证金的 this thread ,以及关于背景颜色的 this one ,但显然,我做的事情正确。问题似乎在其他地方。

我动态创建TableRows,其赔率必须是特定颜色(以提高可读性)。我只是写了这个:

if(myCursor != null && myCursor.moveToFirst()){
do{
    TableRow tableRow = new TableRow(getActivity());
    TableLayout.LayoutParams tlp = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT);
    tlp.setMargins(0, 10, 0, 10);
    tableRow.setLayoutParams(tlp);

    for(int j=0 ; j < TopTagsDetailsCursor.getColumnCount();j++){
        TextView tv = new TextView(getActivity());
        tv.setText(TopTagsDetailsCursor.getString(j));
        if (j>0) tv.setGravity(Gravity.CENTER);
        tableRow.addView(tv);                       
    }

    if ((i % 2) != 0){
        tableRow.setBackgroundColor(getResources().getColor(R.color.table_row));
    }

    dataTable.addView(tableRow);
    i++;
});
}while(myCursor.moveToNext());

我不明白的是,在每个奇数行上,使用我的自定义背景颜色,我的自定义边距(顶部和底部为10)不会“应用”到该行,但它们确实在偶数行上。 还是比较奇怪的是:如果我删除了关于自定义背景颜色的代码部分,那么边距就可以了!

那么,为什么我的自定义背景颜色不合适时我的自定义边距

PS:我甚至尝试移动一些代码行(特别是addView(tableRow)和那些有关颜色的代码),但没有效果。

提前致谢! :)

1 个答案:

答案 0 :(得分:0)

它没有解释为什么之前没有工作,但至少我终于找到了一个&#34;修复&#34;。 我删除了这些行:

TableLayout.LayoutParams tlp = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT);
tlp.setMargins(0, 10, 0, 10);
tableRow.setLayoutParams(tlp);

我换了:

tableRow.addView(tv);

by:

tableRow.addView(tv, new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 80)); //or any other value

它终于工作正常......即使我不明白为什么我的第一个解决方案没有工作:) (随意解释我为什么!)