так что я думаю, что обнаружил реальную проблему здесь.когда вы устанавливаете параметры макета на лету для каждой строки, вы должны убедиться, что вы делаете это для всех условий.Моя проблема заключалась в том, что если это был первый ряд, я устанавливал параметры макета (например, отступы или поля и т. д.), но если это был средний ряд, я не устанавливал эти параметры явно, думая, что он будет использовать только то, что было завышено.по мнению инфлятор.Это объясняет, почему это сработало, когда я каждый раз раздувал вид.Вот до и после:
ДО:
if (position == 0) {
layoutParams.topMargin = uiHelper.getDip(15.0f);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP,
RelativeLayout.TRUE);
holder.actionMenu.setLayoutParams(layoutParams);
holder.contentLayout.setBackgroundResource(R.drawable.top_row);
} else if (position == posts.size() - 1) {
holder.contentLayout
.setBackgroundResource(R.drawable.bottom_row);
holder.contentLayout.setPadding(holder.contentLayout
.getPaddingLeft(),
holder.contentLayout.getPaddingTop(),
holder.contentLayout.getPaddingRight(),
holder.contentLayout.getPaddingBottom() + uiHelper.getDip(10.0f));
} else {
holder.contentLayout
.setBackgroundResource(R.drawable.inner_row);
}
ПОСЛЕ: `
layoutParams.topMargin = uiHelper.getDip(10.0f);
holder.contentLayout.setPadding(holder.contentLayout
.getPaddingLeft(),
holder.contentLayout.getPaddingTop(),
holder.contentLayout.getPaddingRight(),
uiHelper.getDip(10.0f));
if (position == 0) {
layoutParams.topMargin = uiHelper.getDip(15.0f);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP,
RelativeLayout.TRUE);
holder.contentLayout.setBackgroundResource(R.drawable.top_row);
} else if (position == posts.size() - 1) {
holder.contentLayout
.setBackgroundResource(R.drawable.bottom_row);
holder.contentLayout.setPadding(holder.contentLayout
.getPaddingLeft(),
holder.contentLayout.getPaddingTop(),
holder.contentLayout.getPaddingRight(),
uiHelper.getDip(20.0f));
} else {
holder.contentLayout
.setBackgroundResource(R.drawable.inner_row);
}
holder.actionMenu.setLayoutParams(layoutParams);