【问题标题】:Setting margin AND background color in a TableRow在 TableRow 中设置边距和背景颜色
【发布时间】:2014-12-21 10:23:49
【问题描述】:

在以编程方式设置 TableRow 上的边距 背景颜色时,我遇到了一个奇怪的问题。 我已经阅读了关于边距的 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) 和关于颜色的那些),但没有效果。

提前致谢! :)

【问题讨论】:

    标签: java android android-layout


    【解决方案1】:

    它没有解释为什么它以前不起作用,但至少我终于找到了一个“修复”。 我删除了这些行:

    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);
    

    作者:

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

    它终于可以正常工作了......即使我不明白为什么我的第一个解决方案不起作用:) (请随时解释我为什么!)

    【讨论】: