fix:修复房间在线列表 RTL适配问题

This commit is contained in:
max
2024-05-21 15:40:54 +08:00
parent a62278ed30
commit cab7e3542e
2 changed files with 28 additions and 7 deletions

View File

@@ -82,14 +82,24 @@ class RoomOnlineWidget : FrameLayoutRoomWidget, RoomWidget {
false
)
)
val isRTL = UiUtils.isRtl(context)
binding.recyclerView.outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View?, outline: Outline?) {
outline?.setRect(
0,
0,
(view?.width ?: 0) - UiUtils.dip2px(9f),
(view?.height ?: 0),
)
if (isRTL) {
outline?.setRect(
UiUtils.dip2px(9f),
0,
(view?.width ?: 0),
(view?.height ?: 0),
)
} else {
outline?.setRect(
0,
0,
(view?.width ?: 0) - UiUtils.dip2px(9f),
(view?.height ?: 0),
)
}
}
}
binding.recyclerView.clipToOutline = true

View File

@@ -5,6 +5,8 @@ import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
import com.example.lib_utils.UiUtils;
/**
* Created by lvzebiao on 2018/9/27.
*/
@@ -17,6 +19,8 @@ public class VerticalDecoration extends RecyclerView.ItemDecoration {
/**如果尾需要则为ture*/
private boolean last;
private Boolean isRTL;
public VerticalDecoration(int px, boolean first, boolean last) {
this.px = px;
this.first = first;
@@ -26,6 +30,9 @@ public class VerticalDecoration extends RecyclerView.ItemDecoration {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
if (isRTL == null) {
isRTL = UiUtils.INSTANCE.isRtl(parent.getContext());
}
int position = parent.getChildAdapterPosition(view);
int left = 0, right = 0;
if (position == 0) {
@@ -40,6 +47,10 @@ public class VerticalDecoration extends RecyclerView.ItemDecoration {
} else {
right = px;
}
outRect.set(left, 0, right, 0);
if (isRTL) {
outRect.set(right, 0, left, 0);
} else {
outRect.set(left, 0, right, 0);
}
}
}