ඔක්තෝබර් 2016 යාවත්කාලීන කිරීම
ඇන්ඩ්රොයිඩ් ආධාරක පුස්තකාලයේ 25.0.0 අනුවාදය DividerItemDecoration
පන්තිය හඳුන්වා දුන්නේය :
DividerItemDecoration යනු ප්රතිචක්රීකරණ දසුනකි LinearLayoutManager
. එය දෙකටම HORIZONTAL
සහ VERTICAL
දිශානතියට සහාය වේ.
භාවිතය:
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(),
layoutManager.getOrientation());
recyclerView.addItemDecoration(dividerItemDecoration);
පෙර පිළිතුර
සමහර පිළිතුරු එක්කෝ එතැන් සිට ඉවත් කර ඇති ක්රම භාවිතා කරයි, නැතහොත් සම්පූර්ණ විසඳුමක් ලබා නොදේ, එබැවින් මම කෙටි, යාවත්කාලීන එතුමක් කිරීමට උත්සාහ කළෙමි.
මෙන් නොව ListView
, RecyclerView
පන්තියට බෙදුම්කරු හා සම්බන්ධ පරාමිතීන් නොමැත. ඒ වෙනුවට, ඔබ දීර්ඝ කිරීමට අවශ්ය ItemDecoration
, එය RecyclerView
's අභ්යන්තර පන්ති:
ක ItemDecoration
අයදුම් ඇඩප්ටරය දත්ත කට්ටලයක් සිට විශේෂිත අයිතමය අදහස් කිරීමට හිලව් විශේෂ චිත්ර හා සැලැස්ම එකතු කිරීමට ඉඩ දෙයි. අයිතම, උද්දීපනයන්, දෘශ්ය කණ්ඩායම් මායිම් සහ තවත් දේ අතර බෙදුම්කරුවන් ඇඳීමට මෙය ප්රයෝජනවත් වේ.
සියලු ItemDecorations
(අයිතමය අදහස් පෙර, ඔවුන් එකතු විය පිළිවෙළ ඇද ගනී onDraw()
) සහ onDrawOver ඇති ද්රව්ය ((පසු Canvas
, RecyclerView
, RecyclerView.State)
.
Vertical
පරතරය ItemDecoration
විස්තාරණය කරන්න ItemDecoration
, height
පරාමිතියක් ලෙස ඉඩ ලබාගෙන අභිබවා යන අභිරුචි ඉදිකිරීම්කරු එක් කරන්න getItemOffsets()
:
public class VerticalSpaceItemDecoration extends RecyclerView.ItemDecoration {
private final int verticalSpaceHeight;
public VerticalSpaceItemDecoration(int verticalSpaceHeight) {
this.verticalSpaceHeight = verticalSpaceHeight;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent,
RecyclerView.State state) {
outRect.bottom = verticalSpaceHeight;
}
}
අවසාන අයිතමයට පහළින් ඉඩක් ඇතුළු කිරීමට ඔබට අවශ්ය නැතිනම්, පහත දැක්වෙන කොන්දේසිය එක් කරන්න:
if (parent.getChildAdapterPosition(view) != parent.getAdapter().getItemCount() - 1) {
outRect.bottom = verticalSpaceHeight;
}
සටහන: ඔබට වෙනස් කළ හැකිය outRect.top
, outRect.left
සහ outRect.right
අපේක්ෂිත බලපෑම සඳහා ගුණාංග.
බෙදුම්කරු ItemDecoration
ක්රමය දීර් ItemDecoration
and කිරීම සහ අභිබවා යාම onDraw()
:
public class DividerItemDecoration extends RecyclerView.ItemDecoration {
private static final int[] ATTRS = new int[]{android.R.attr.listDivider};
private Drawable divider;
/**
* Default divider will be used
*/
public DividerItemDecoration(Context context) {
final TypedArray styledAttributes = context.obtainStyledAttributes(ATTRS);
divider = styledAttributes.getDrawable(0);
styledAttributes.recycle();
}
/**
* Custom divider will be used
*/
public DividerItemDecoration(Context context, int resId) {
divider = ContextCompat.getDrawable(context, resId);
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
View child = parent.getChildAt(i);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
int top = child.getBottom() + params.bottomMargin;
int bottom = top + divider.getIntrinsicHeight();
divider.setBounds(left, top, right, bottom);
divider.draw(c);
}
}
}
සුපුරුදු ඇන්ඩ්රොයිඩ් බෙදුම්කරු ගුණාංග භාවිතා කරන පළමු ඉදිකිරීම්කරු හෝ ඔබේම ඇඳිය හැකි දෙවැන්න භාවිතා කළ හැකිය, උදාහරණයක් ලෙස drawable / diver.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:height="1dp" />
<solid android:color="#ff992900" />
</shape>
සටහන: ඔබේ අයිතම මත බෙදුම්කරු ඇද ගැනීමට ඔබට අවශ්ය නම් , onDrawOver()
ඒ වෙනුවට ක්රමය ඉක්මවා යන්න.
භාවිතය
ඔබගේ නව පංතියේ එකතු කිරීම VerticalSpaceItemDecoration
හෝ භාවිතා DividerSpaceItemDecoration
කිරීම RecyclerView
සඳහා, උදාහරණයක් ලෙස ඔබේ කැබැල්ලේ onCreateView()
ක්රමයට:
private static final int VERTICAL_ITEM_SPACE = 48;
private RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_feed, container, false);
recyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_home_recycler_view);
linearLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(linearLayoutManager);
//add ItemDecoration
recyclerView.addItemDecoration(new VerticalSpaceItemDecoration(VERTICAL_ITEM_SPACE));
//or
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity()));
//or
recyclerView.addItemDecoration(
new DividerItemDecoration(getActivity(), R.drawable.divider));
recyclerView.setAdapter(...);
return rootView;
}
ද තිබෙන ලූකස් රෝචා පුස්ථකාලය අයිතමය සැරසිලි ක්රියාවලිය සරල කිරීම සඳහා යැයි කියනු ලබන. එය උත්සාහ කර නැත.
එහි ලක්ෂණ අතර:
- කොටස් අයිතම සැරසිලි එකතුවක් ඇතුළුව:
- අයිතම පරතරය තිරස් / සිරස් බෙදුම්කරුවන්.
- ලැයිස්තු අයිතමය