Unter der Annahme, dass view
einen Verweis auf die Ansicht enthält, für die Sie die Ränder ändern möchten, können Sie den unteren Rand auf 20 Pixel festgelegt mit dem folgenden:
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(0, 0, 0, 20);
view.setLayoutParams(lp);
Beachten Sie, dass dies wird sich ändern der untere Rand auf 20 Pixel und nicht 20dp. Sie müssen Ihren 20-dpi-Wert in Pixel umwandeln. Converting pixels to dp wäre ein guter Ort, um zu sehen, wie diese Konvertierung durchgeführt werden kann.
Möglicherweise müssen Sie auch die Parameter height und width im Konstruktor für LinearLayout.LayoutParams entsprechend Ihren Anforderungen ändern.
Wenn das Problem einen Verweis auf die Ansicht erhält, wäre das Posten eines Codes hilfreich.
Bearbeiten/Update Der Code geholfen. Ich glaube nicht, dass Sie den Zugriff auf die gewünschte Ansicht einrichten. Hier ist ein anderer Ansatz:
mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
// Find the adapter position of the first fully visible item
// May return RecyclerView.NO_POSITION that is not handled here.
firstVisibleItem = lm.findFirstCompletelyVisibleItemPosition();
// Find the corresponding view holder for this position.
// MyViewHolder should already be defined (just don't know the name).
MyViewHolder vh = (MyViewHolder) mRecyclerView
.findViewHolderForAdapterPosition(firstVisibleItem);
// Get the layout parameters from the top-level item of this view.
// This could also be another view captured within the view holder.
RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) vh.itemView.getLayoutParams();
// Make our changes and set them.
lp.setMargins(0, 0, 0, 50);
vh.itemView.setLayoutParams(lp);
}
});
Ich habe versucht, die Ansicht mit Ansicht anzeigen zu erhalten = mRecyclerView.getChildAt (firstVisibleItem); und setze Layout-Parameter mit Rand lp.setMargins (0, 0, 0, 20); aber arbeitete nicht – user2466059