Anche se questa domanda è più di un anno fa, ho pensato di condividere quello che ho fatto, qualcuno potrebbe piace, o semplicemente non vuole scrivere e può con ciò copiare/incollare: D.
La mia soluzione era aggiungere un margine inferiore all'ultimo elemento.
prima cosa determinare che è l'ultimo elemento:
@Override
public void onBindViewHolder(final ItemViewHolder holder, int position) {
....
Your other code
....
// Check if it is the last item and the list is not empty.
if(position == mItems.size()-1) {
// If so, add some margin to the element
holder.setBottomMargin(R.dimen.last_item_offset); // some dimension (or set a fixed amount of pixels
}
}
poi ho un metodo nel viewholder per impostare il margine inferiore.
class ItemViewHolder extends RecyclerView.ViewHolder {
private View mRootView;
private Context mContext;
public ItemViewHolder(View itemView) {
super(itemView);
mRootView = itemView;
mContext = itemView.getContext();
// do more stuff like binding views, etc
}
public void setBottomMargin(@DimenRes int margin){
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams) mRootView.getLayoutParams();
layoutParams.bottomMargin = (int)getContext().getResources().getDimension(margin);
mRootView.setLayoutParams(layoutParams);
}
}
E per la completezza di questo esempio, la dimensione
<resources>
<dimen name="spot_list_footer_position_offset">-56dp</dimen>
</resources>
Spero che questo sia quello che stavi cercando.
Questo. La soluzione più semplice di gran lunga. –