Я использую пользовательский элемент управления следующим образом:
public class DayView : RelativeLayout {
.....
}
в своем конструкторе я называю
inflate(getContext(), R.layout.day_view, this);
, который относится к этому XML
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/day_previous"
android:layout_width="80dp"
android:layout_height="48dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_arrow_left" />
<ImageButton
android:id="@+id/day_next"
android:layout_width="80dp"
android:layout_height="48dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:src="@drawable/ic_arrow_right" />
<TextView
android:id="@+id/day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:padding="8dp"
android:textSize="16sp"
tools:text="Today" />
</RelativeLayout>
У меня также есть такие атрибуты:
<declare-styleable name="DayView">
<attr name="backColor" format="color" />
<attr name="textColor" format="color" />
</declare-styleable>
Что я хочу сделать, так это использовать пользовательский атрибут, установленный пользователем, для изменения атрибутов внутри xml
поэтому, когда макет использует мой DayView, он будет выглядеть так:
<com.example.dayview
android:id="@+id/firstscreen_today"
app:backColor="@color/panelColor"
app:textColor="@color/panelTextColor"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
проблема в том, что когда я изменяю свой макет day_view следующим образом:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?backColor">
мое приложение продолжает падать, потому что оно не может раздуть представление
есть ли способ обойти это без переопределения конструктора и использования typedarray.getcolor, чтобы получить цвет, а затем применить его вручную к макету?