问题描述
我有一个简单的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 (将#修改为@)