下面列出了androidx.recyclerview.widget.RecyclerView#setPadding ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private RecyclerView createRecyclerView(boolean listTypeGrid) {
Context context = requireContext();
RecyclerView recyclerView = new RecyclerView(context);
recyclerView.setLayoutParams(
new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
int verticalPadding =
context.getResources().getDimensionPixelSize(R.dimen.album_list_padding_vertical);
recyclerView.setPadding(0, verticalPadding, 0, verticalPadding);
recyclerView.setClipToPadding(false);
if (listTypeGrid) {
recyclerView.setLayoutManager(new GridLayoutManager(context, GRID_SPAN_COUNT));
} else {
recyclerView.setLayoutManager(new LinearLayoutManager(context));
recyclerView.addItemDecoration(
new DividerItemDecoration(context, DividerItemDecoration.VERTICAL));
}
return recyclerView;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mRecyclerView = (RecyclerView) view;
mRecyclerView.setBackgroundColor(0xFF323232);
mAdapter = new AdvancedListAdapter();
mRecyclerView.setAdapter(mAdapter);
int divider = getResources().getDimensionPixelSize(R.dimen.divider);
mRecyclerView.setPadding(divider/2,divider/2,divider/2,divider/2);
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(),2);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.addItemDecoration(new SpaceItemDecoration(divider));
initCells();
}
protected void applyRecyclerViewPaddingForLayoutRes(@NonNull RecyclerView recyclerView, @LayoutRes int res) {
int padding;
if (res == R.layout.item_grid) {
padding = (int) (getResources().getDisplayMetrics().density * 2);
} else {
padding = 0;
}
recyclerView.setPadding(padding, padding, padding, padding);
}
private void prepareListView(Context context) {
mListView = new RecyclerView(context);
mAdapter = new ItemAdapter();
mListView.setClipToPadding(false);
mListView.setPadding(0, getResources().getDimensionPixelSize(R.dimen.stepper_margin_top), 0, 0);
mListView.addItemDecoration(new VerticalSpaceItemDecoration(
getResources().getDimensionPixelSize(R.dimen.vertical_stepper_item_space_height)));
mListView.setLayoutManager(new LinearLayoutManager(context));
mListView.setAdapter(mAdapter);
addView(mListView, new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
}
public MenuBottomSheetDialog(@NonNull Context context) {
super(context);
RecyclerView content = new RecyclerView(context);
content.setLayoutManager(new LinearLayoutManager(context));
content.setAdapter(new ItemAdapter());
int verticalPadding = content.getResources().getDimensionPixelSize(R.dimen.bottom_sheet_menu_vertical_margin);
content.setPadding(0, verticalPadding, 0, verticalPadding);
setContentView(content);
content.setBackgroundColor(StyledAttributesHelper.getColor(context, R.attr.colorBackgroundFloating, 0));
}
protected void applyRecyclerViewPaddingForLayoutRes(@NonNull RecyclerView recyclerView, @LayoutRes int res) {
int padding;
if (res == R.layout.item_grid) {
padding = (int) (getResources().getDisplayMetrics().density * 2);
} else {
padding = 0;
}
recyclerView.setPadding(padding, padding, padding, padding);
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (parent.getPaddingLeft() != halfSpace) {
parent.setPadding(halfSpace, halfSpace, halfSpace, halfSpace);
parent.setClipToPadding(false);
}
outRect.top = halfSpace;
outRect.bottom = halfSpace;
outRect.left = halfSpace;
outRect.right = halfSpace;
}
public GridMarginsDecoration(@Px float marginsVertical, @Px float marginsHorizontal, RecyclerView recyclerView) {
this.marginsVertical = marginsVertical;
this.marginsHorizontal = marginsHorizontal;
recyclerView.setClipToPadding(false);
recyclerView.setPadding(
(int) marginsHorizontal / 2,
(int) marginsVertical / 2,
(int) marginsHorizontal / 2,
(int) marginsVertical / 2
);
}
private void setParentPadding(RecyclerView parent, @Px int padding, Rect insets) {
parent.setPadding(
padding + insets.left,
padding,
padding + insets.right,
padding + insets.bottom
);
parent.setClipToPadding(false);
}
@NonNull
@Override
public final RecyclerView onCreateRecyclerView(final LayoutInflater inflater,
final ViewGroup parent,
final Bundle savedInstanceState) {
RecyclerView recyclerView =
super.onCreateRecyclerView(inflater, parent, savedInstanceState);
recyclerView.setClipToPadding(false);
int paddingTop =
getActivity().getResources().getDimensionPixelSize(R.dimen.list_view_padding_top);
recyclerView.setPadding(recyclerView.getPaddingLeft(), paddingTop,
recyclerView.getPaddingRight(), recyclerView.getPaddingBottom());
return recyclerView;
}
protected void applyRecyclerViewPaddingForLayoutRes(@NonNull RecyclerView recyclerView, @LayoutRes int res) {
int padding;
if (res == R.layout.item_grid) {
padding = (int) (getResources().getDisplayMetrics().density * 2);
} else {
padding = 0;
}
recyclerView.setPadding(padding, padding, padding, padding);
}
/**
* Removes the padding previously added to the <code>recyclerView</code>
* for the edge spacing. If no padding was previously added, then this
* has no affect
*
* @param recyclerView The RecyclerView to remove the padding from
*/
protected void resetRecyclerPadding(@NonNull RecyclerView recyclerView) {
recyclerView.setPadding(
recyclerView.getPaddingLeft() - edgeSpacing,
recyclerView.getPaddingTop(),
recyclerView.getPaddingRight() - edgeSpacing,
recyclerView.getPaddingBottom()
);
}
@Override
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState) {
RecyclerView view = super.onCreateRecyclerView(inflater, parent, savedInstanceState);
view.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.background));
int padding = (int) getResources().getDimension(R.dimen.global_padding);
view.setPadding(padding, 0, padding, 0);
view.addItemDecoration(new BackgroundDecoration(android.R.id.title));
view.addItemDecoration(new DividerDecoration(getContext(), android.R.id.title));
return view;
}
protected void initViews() {
inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.ultimate_recycler_view_layout, this);
mRecyclerView = (RecyclerView) view.findViewById(R.id.ultimate_list);
mSwipeRefreshLayout = (VerticalSwipeRefreshLayout) view.findViewById(R.id.swipe_refresh_layout);
setScrollbars();
mSwipeRefreshLayout.setEnabled(false);
if (mRecyclerView != null) {
mRecyclerView.setClipToPadding(mClipToPadding);
if (mPadding != -1.1f) {
mRecyclerView.setPadding(mPadding, mPadding, mPadding, mPadding);
} else {
mRecyclerView.setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
}
}
defaultFloatingActionButton = (FloatingActionButton) view.findViewById(R.id.defaultFloatingActionButton);
setDefaultScrollListener();
/**
* empty view setup
*/
mEmpty = (ViewStub) view.findViewById(R.id.emptyview);
if (mEmptyId != 0) {
mEmpty.setLayoutResource(mEmptyId);
mEmptyView = mEmpty.inflate();
mEmpty.setVisibility(View.GONE);
}
/**
* floating button setup
*/
mFloatingButtonViewStub = (ViewStub) view.findViewById(R.id.floatingActionViewStub);
mFloatingButtonViewStub.setLayoutResource(mFloatingButtonId);
}
@Override
protected void initViews() {
//super.initViews();
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.custom_recycler_view_layout, this);
mRecyclerView = (RecyclerView) view.findViewById(R.id.ultimate_list);
mSwipeRefreshLayout = null;
if (mRecyclerView != null) {
mRecyclerView.setClipToPadding(mClipToPadding);
if (mPadding != -1.1f) {
mRecyclerView.setPadding(mPadding, mPadding, mPadding, mPadding);
} else {
mRecyclerView.setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
}
}
defaultFloatingActionButton = (FloatingActionButton) view.findViewById(R.id.defaultFloatingActionButton);
setDefaultScrollListener();
mEmpty = (ViewStub) view.findViewById(R.id.emptyview);
mFloatingButtonViewStub = (ViewStub) view.findViewById(R.id.floatingActionViewStub);
mEmpty.setLayoutResource(mEmptyId);
mFloatingButtonViewStub.setLayoutResource(mFloatingButtonId);
if (mEmptyId != 0)
mEmptyView = mEmpty.inflate();
mEmpty.setVisibility(View.GONE);
if (mFloatingButtonId != 0) {
mFloatingButtonView = mFloatingButtonViewStub.inflate();
mFloatingButtonView.setVisibility(View.VISIBLE);
}
}
private void adjustPaddings() {
RecyclerView recyclerView = mRecyclerView;
recyclerView.setPadding(recyclerView.getPaddingLeft(), recyclerView.getPaddingTop() + mPaddingTopSB,
recyclerView.getPaddingRight(), recyclerView.getPaddingBottom());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int screenWidth = getScreenWidth();
// Setup ViewPager with indicator
ViewPager pager = findViewById(R.id.pager);
DemoPagerAdapter pagerAdapter = new DemoPagerAdapter(8);
pager.setAdapter(pagerAdapter);
ScrollingPagerIndicator pagerIndicator = findViewById(R.id.pager_indicator);
pagerIndicator.attachToPager(pager);
// Setup ViewPager2 with indicator
ViewPager2 pager2 = findViewById(R.id.pager2);
DemoRecyclerViewAdapter pagerAdapter2 = new DemoRecyclerViewAdapter(8, ViewGroup.LayoutParams.MATCH_PARENT);
pager2.setAdapter(pagerAdapter2);
ScrollingPagerIndicator pagerIndicator2 = findViewById(R.id.pager_indicator2);
pagerIndicator2.attachToPager(pager2);
// Setup RecyclerView with indicator
// One page will occupy 1/3 of screen width
RecyclerView recyclerView = findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
DemoRecyclerViewAdapter recyclerAdapter = new DemoRecyclerViewAdapter(8, screenWidth / 3);
recyclerView.setAdapter(recyclerAdapter);
recyclerView.setPadding(screenWidth / 3, 0, screenWidth / 3, 0);
ScrollingPagerIndicator recyclerIndicator = findViewById(R.id.recycler_indicator);
// Consider page in the middle current
recyclerIndicator.attachToRecyclerView(recyclerView);
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
// Some controls
NumberPicker pageCountPicker = findViewById(R.id.page_number_picker);
pageCountPicker.setMaxValue(99);
pageCountPicker.setMinValue(0);
pageCountPicker.setValue(pagerAdapter.getCount());
NumberPicker visibleDotCountPicker = findViewById(R.id.visible_dot_number_picker);
visibleDotCountPicker.setMinValue(3);
visibleDotCountPicker.setMaxValue(11);
visibleDotCountPicker.setValue(pagerIndicator.getVisibleDotCount());
visibleDotCountPicker.setOnValueChangedListener((picker, oldVal, newVal) -> {
if (newVal % 2 == 0) {
Toast.makeText(this, "Visible dot count must be odd number", Toast.LENGTH_SHORT).show();
return;
}
pagerIndicator.setVisibleDotCount(newVal);
recyclerIndicator.setVisibleDotCount(newVal);
});
pageCountPicker.setOnValueChangedListener((picker, oldVal, newVal) -> {
if (pager.getCurrentItem() >= newVal - 1) {
pager.setCurrentItem(newVal - 1, false);
}
pagerAdapter.setCount(newVal);
recyclerAdapter.setCount(newVal);
});
}
private void adjustPaddings() {
RecyclerView recyclerView = mRecyclerView;
recyclerView.setPadding(recyclerView.getPaddingLeft(), recyclerView.getPaddingTop() + mPaddingTopSB,
recyclerView.getPaddingRight(), recyclerView.getPaddingBottom());
}
private void setParentPadding(RecyclerView parent, Rect insets) {
parent.setPadding(insets.left, 0, insets.right, insets.bottom);
parent.setClipToPadding(false);
}
/**
* Calculates and adds the amount of spacing that needs to be between each
* column, row, and the edges of the RecyclerView. This pays attention to
* the value from {@link #setSpacingMethod(SpacingMethod)}
*
* @param recyclerView The RecyclerView to use for determining the amount of space that needs to be added
* @param gridItemWidth The requested width for the items
* @param columnCount The number of columns to display
*/
protected void updateSpacing(@NonNull RecyclerView recyclerView, int gridItemWidth, int columnCount) {
//Sets the decoration for the calculated spacing
if (spacerDecoration == null) {
spacerDecoration = new SpacerDecoration();
spacerDecoration.setAllowedEdgeSpacing(SpacerDecoration.EDGE_SPACING_LEFT | SpacerDecoration.EDGE_SPACING_RIGHT);
recyclerView.addItemDecoration(spacerDecoration);
}
edgeSpacing = minColumnSpacingEdge;
int separatorSpacing = minColumnSpacingSeparator / 2;
//Calculates the edge spacing requirements
int padding = recyclerView.getPaddingLeft() + recyclerView.getPaddingRight();
int usableWidth = recyclerView.getWidth() - padding;
int separatorCount = columnCount -1;
int spacerCount = 2 * columnCount;
int freeSpace = usableWidth - (gridItemWidth * columnCount);
int extraSpace = freeSpace - (2 * minColumnSpacingEdge) - (separatorCount * minColumnSpacingSeparator);
//If we can add spacing, then we need to calculate how much and where to add it
if (extraSpace >= spacerCount) {
if (spacingMethod == SpacingMethod.ALL) {
int totalMinEdges = minColumnSpacingEdge * 2;
int totalMinSeparators = separatorCount * minColumnSpacingSeparator;
//If the totalMinSpace is 0, then the percentage is edge count / separators + edges
int totalMinSpace = totalMinEdges + totalMinSeparators;
double edgeSpacePercentage = totalMinSpace == 0 ? (2 / (2 + separatorCount)) : (double)totalMinEdges / (double)totalMinSpace;
int totalSeparatorSpace = (int)((1d - edgeSpacePercentage) * freeSpace);
separatorSpacing = spacerCount == 0 ? 0 : totalSeparatorSpace / spacerCount;
edgeSpacing = ((freeSpace - totalSeparatorSpace) / 2) + separatorSpacing;
} else if (spacingMethod == SpacingMethod.EDGES) {
edgeSpacing = (freeSpace - (separatorSpacing * spacerCount)) / 2;
} else { //SEPARATOR
separatorSpacing = spacerCount == 0 ? 0 : freeSpace / spacerCount;
}
edgeSpacing -= separatorSpacing;
}
//Updates the spacing using the decoration and padding
recyclerView.setPadding(
recyclerView.getPaddingLeft() + edgeSpacing,
recyclerView.getPaddingTop(),
recyclerView.getPaddingRight() + edgeSpacing,
recyclerView.getPaddingBottom()
);
spacerDecoration.update(separatorSpacing, matchSpacing ? separatorSpacing : rowSpacing / 2);
}