您可以将自定义属性用作Android中常规属性的值吗

时间:2019-06-19 11:51:06

标签: android custom-controls

我正在使用这样的自定义控件:

a = r'some\'\
r'very\long\path'

在其构造函数中,我称为

public class DayView : RelativeLayout {
    .....
}

引用此xml

inflate(getContext(), R.layout.day_view, this);

我也有这样的自定义属性:

<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>

我要做的是在用户设置时使用定制属性来更改xml中的属性

因此,当布局使用我的DayView时,它将如下所示:

<declare-styleable name="DayView">
    <attr name="backColor" format="color" />
    <attr name="textColor" format="color" />
</declare-styleable>

问题是,当我将day_view布局更改为此:

<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"
/>

我的应用程序不断崩溃,因为它无法使视图膨胀

是否有一种绕过此方法而不覆盖构造函数并使用typedarray.getcolor获取颜色然后将其手动应用于布局的方法?

0 个答案:

没有答案