Добавьте толщину к линиям декорации вида переработчика - PullRequest
0 голосов
/ 09 марта 2019

В своей деятельности я использую вид рециркулятора с макетом сетки, я просто устанавливаю оформление элемента вида рециркулятора, которое успешно добавляет линии в вид рециркулятора, но эти линии слишком тонкие по толщине и не видны, поэтому мой вопрос - как можно я увеличиваю толщину и меняю цвет этих линий.

Вот код, который я использую:

recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL));
        recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.HORIZONTAL));

Снимок экрана с моим видом переработчика:

Снимок экрана программы повторного просмотра

Ответы [ 3 ]

0 голосов
/ 09 марта 2019

Я думаю, что нашел решение для вашего вопроса ... Вам нужно реализовать один нарисованный файл для увеличения толщины линий отделки ... И добавить это к оформлению ... Для изменения цвета, в рисовании вы объявляете свой цвет вамхочу показать в декоративных линиях ..

Вот решение:

Добавить Divr.mxl в папку для рисования ...

divr.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="line">
<size
    android:width="1px"
    android:height="15px"/>

    <solid android:color="@android:color/white"/>
</shape>

А это строки вашей деятельности ..

 Drawable mDivider = ContextCompat.getDrawable(this, R.drawable.divider);
 dividerItemDecoration.setDrawable(mDivider);
0 голосов
/ 09 марта 2019

Попробуйте этот код Java

ShapeDrawable vLine = new ShapeDrawable(new Shape() {
    @Override
    public void draw(Canvas canvas, Paint paint) {
        paint.setStrokeWidth(10);
        paint.setColor(Color.BLACK);
        canvas.drawLine(0, 0, 0, 500, paint);
    }
});
ShapeDrawable hLine = new ShapeDrawable(new Shape() {
    @Override
    public void draw(Canvas canvas, Paint paint) {
        paint.setStrokeWidth(10);
        paint.setColor(Color.BLACK);
        canvas.drawLine(0, 0, 500, 0, paint);
    }
});
DividerItemDecoration vDID = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL);
DividerItemDecoration hDID = new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.HORIZONTAL);
vDID.setDrawable(vLine);
hDID.setDrawable(hLine);
recyclerView.addItemDecoration(vDID);
recyclerView.addItemDecoration(hDID);

Примечание: Вы можете сделать это с помощью XML, но вышеупомянутое решение - решение в одном месте , хотя кодвыглядит большим.

0 голосов
/ 09 марта 2019

Вы можете использовать это, чтобы установить сетку одинаково

public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
  private int spanCount;
    private int spacing;
    private boolean includeEdge;

    public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
        this.spanCount = spanCount;
        this.spacing = spacing;
        this.includeEdge = includeEdge;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        int position = parent.getChildAdapterPosition(view); // item position
        int column = position % spanCount; // item column

        if (includeEdge) {
            outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
            outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)

            if (position < spanCount) { // top edge
                outRect.top = spacing;
            }
            outRect.bottom = spacing; // item bottom
        } else {
            outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)
            outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f /    spanCount) * spacing)
            if (position >= spanCount) {
                outRect.top = spacing; // item top
            }
        }
    }
}

/**
 * Converting dp to pixel
 */
private int dpToPx(int dp) {
    Resources r = getResources();
    return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()));
}

А затем,

recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true));
...