TableLayout为Android 7.0及更低版本中的某些单元格增加了上边距

问题描述

我有一个简单的TableLayout,其中包含一些带有某些单元格的TableRow项,每个单元格都是一个TextView。

这些单元格没有上边距,并且在Android 8.0和更高版本的设备上可以完美地绘制它们,但是在Android 7.0及更低版本中,某些单元格在它们之间增加了上边距!我不明白那是怎么回事,这非常令人沮丧。

在这种情况下,它发生在名为player的TextView中,并且仅当名称过长并且使用ellipsize截断它时才出现。

代码很简单:

public void populateGoalscorersTable(ArrayList<Player> players){
    goalscorersTableLayout.removeAllViews();

    for (int i=0; i<players.size() && i<30; i++){
        TableRow row = new TableRow(this);
        row.setLayoutParams(goalscorersRowParams);

        TextView position = new TextView(this);
        position.setGravity(Gravity.CENTER);
        position.setLayoutParams(goalscorersPositionParams);
        position.setText(""+(i+1));
        position.setBackgroundResource(R.drawable.table_cell_background);
        position.setMinHeight((int) getResources().getDimension(R.dimen.cell_height));
        row.addView(position);

        TextView player = new TextView(this);
        player.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
        player.setLayoutParams(goalscorersPlayerParams);
        player.setText(players.get(i).getName());
        player.setBackgroundResource(R.drawable.table_cell_background);
        player.setMaxLines(1);
        player.setEllipsize(TextUtils.TruncateAt.END);
        player.setPadding((int) getResources().getDimension(R.dimen.spacing_small),(int) getResources().getDimension(R.dimen.spacing_small),0);
        player.setMinHeight((int) getResources().getDimension(R.dimen.cell_height));
        row.addView(player);

        TextView team = new TextView(this);
        team.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
        team.setLayoutParams(goalscorersTeamParams);
        team.setText(players.get(i).getTeam().getName());
        team.setBackgroundResource(R.drawable.table_cell_background);
        team.setMaxLines(1);
        team.setEllipsize(TextUtils.TruncateAt.END);
        team.setPadding((int) getResources().getDimension(R.dimen.spacing_small),0);
        team.setMinHeight((int) getResources().getDimension(R.dimen.cell_height));
        row.addView(team);

        TextView goals = new TextView(this);
        goals.setGravity(Gravity.CENTER);
        goals.setLayoutParams(goalscorersPositionParams);
        goals.setText(""+players.get(i).getLeagueGoals());
        goals.setBackgroundResource(R.drawable.table_cell_background);
        goals.setMinHeight((int) getResources().getDimension(R.dimen.cell_height));
        row.addView(goals);

        if (players.get(i).getTeam() == Manager.getInstance().getTeam()){
            player.setTextColor(getResources().getColor(R.color.player_team));
            player.setTypeface(null,Typeface.BOLD);

            team.setTextColor(getResources().getColor(R.color.player_team));
            team.setTypeface(null,Typeface.BOLD);
        }

        goalscorersTableLayout.addView(row);
    }
}

这不是使此错误提示的上边距出现的唯一方法,例如,当我有一行行TextView单元格只有一个字符而其他行有一个以上字符时,我可以看到它。具有更多字符的TextViews获得了利润。我也可以看到当某些TextViews向左对齐而另一些居中时发生此错误。非常令人沮丧。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)