Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置表格行中的边距和背景色_Java_Android_Android Layout - Fatal编程技术网

Java 设置表格行中的边距和背景色

Java 设置表格行中的边距和背景色,java,android,android-layout,Java,Android,Android Layout,当以编程方式在TableRow上设置边距和背景色时,我遇到了一个奇怪的问题。 我已经读过关于页边空白和背景色的书,但显然,我做的事情是正确的。问题似乎在别的地方 我动态创建TableRows,它必须是特定的颜色以提高可读性。我只是写了这样一句话: if(myCursor != null && myCursor.moveToFirst()){ do{ TableRow tableRow = new TableRow(getActivity()); TableLayo

当以编程方式在TableRow上设置边距和背景色时,我遇到了一个奇怪的问题。 我已经读过关于页边空白和背景色的书,但显然,我做的事情是正确的。问题似乎在别的地方

我动态创建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:我甚至尝试移动一些代码行,特别是addViewtableRow和那些关于颜色的代码行,但没有效果


提前谢谢!:

它没有解释为什么它以前不工作,但至少我最终找到了一个解决方案。 我删除这些行:

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