Маржа игнорируется в элементе RecyclerView - PullRequest
0 голосов
/ 04 марта 2019

Я использую включенные макеты в элементе RecyclerView, и каждый layout_margin игнорируется в моем приложении (не в предварительном просмотре макета).Почему это происходит?Padding работал для TextView, но, поскольку я хочу расположить некоторые значки, сделанные из TextView и ImageView, все поля между ними игнорируются.

В этом примере ниже заполнение не имеет такого эффекта, который «толкает» значок на 5dp вверх снизу.

Пример включенного макета (значка) в моем RecyclerView вещь:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="38dp">

    <ImageView
            android:id="@+id/w_icon"
            android:layout_width="9dp"
            android:layout_height="18dp"
            android:layout_marginBottom="5dp"
            android:layout_alignParentBottom="true"
            android:background="@drawable/ic_w"/>

    <TextView
            android:id="@+id/w_distance"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toEndOf="@id/w_icon"
            android:layout_alignParentBottom="true"
            android:text="5"
            android:includeFontPadding="false"
            android:textSize="12sp"
            android:textStyle="bold"
            android:textColor="@color/colorTextDarkGrey"/>

</RelativeLayout>

ОБНОВЛЕНИЕ: Я использовал wrap_content для RelativeLayout, но я должен изменить margins внутри.Если я использую поля в xml / или я буду устанавливать их во время создания программным способом, это не будет работать в моем приложении.Поля не устанавливаются после сборки.

Это пример Views в HorizontalScrollView внутри моего RecyclerView элемента.Это только для предварительного просмотра.Реальные Views добавляются к пустым LinearLayout с использованием LayoutInflater:

<HorizontalScrollView
                    android:id="@+id/scrollable_tracker"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:paddingBottom="8dp"
                    >

                    <LinearLayout
                        android:id="@+id/icon_view_container"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal">

                        <include layout="@layout/w_layout"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginBottom="-5dp"/>
                        <include layout="@layout/w_arrow"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginBottom="-3dp"/>
                        <include layout="@layout/next_layout"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"/>

                    </LinearLayout>

                </HorizontalScrollView>

Программно добавляется margins этим способом:

 private fun setViewMargins(v: View, b: Float){
            val params = RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
            )
            params.setMargins(left, top, right, convertDpToPixel(b).toInt())
            v.layoutParams = params
        }

Графический пример моего recyclerView предмета:

enter image description here

1 Ответ

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

RelativeLayout - это группа представлений, которая отображает дочерние представления в относительных позициях. Пожалуйста, отметьте this

Никогда не принимайте исправления android:layout_widthight и and android:layout_height, вы также можете добиться этого с помощью LinearLayout это будет простой способ

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:gravity="center_vertical"
android:padding="5dp"
android:layout_height="wrap_content">

<ImageView
    android:id="@+id/w_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:layout_alignParentLeft="true"
    android:layout_centerInParent="true"
    android:background="@drawable/ic_close"/>

<TextView
    android:id="@+id/w_distance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toEndOf="@id/w_icon"
    android:text="5"
     android:layout_centerInParent="true"
    android:layout_marginLeft="5dp"
    android:textSize="12sp"
    android:textStyle="bold"
    android:textColor="@color/colorPrimary"/></RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...