Я использую включенные макеты в элементе 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
предмета: