Android自定义状态按钮不起作用

时间:2016-09-05 06:48:42

标签: android

我找到了关于implementing custom drawable states using selectors的有趣答案。我复制了源代码并添加了使用自定义按钮的活动。但它不起作用 - 创建的按钮是灰色的。从不打电话给塞特犬。这应该会导致使用绿色item_raw背景时的状态。

完整代码位于GitHub:https://github.com/literakl/DressUp/commit/4357f32773f4dbe15c05a3565e9fa39cdba4cee3

我对原始答案的更改如下。首先是从Manifest软件包中复制名称空间:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/sandbox.lelisoft.com.dressup">

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<sandbox.lelisoft.com.dressup.FoodButton
    android:layout_height="60dp"
    android:layout_width="150dp"
    app:state_baked="false"
    app:state_fried="true"
    />

我犯了什么愚蠢的错误?

1 个答案:

答案 0 :(得分:2)

终于有效了。第一个问题是缺少background属性,第二个问题是缺少构造函数中的属性设置。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<sandbox.lelisoft.com.dressup.FoodButton
    android:id="@+id/foodButton"
    android:layout_height="60dp"
    android:layout_width="150dp"
    android:layout_margin="@dimen/activity_horizontal_margin"
    app:state_baked="false"
    app:state_fried="true"
    android:background="@drawable/food_button"
    />

public FoodButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    for (int i=0;i<attrs.getAttributeCount();i++) {
        switch (attrs.getAttributeName(i)) {
            case "state_baked": mIsBaked = attrs.getAttributeBooleanValue(i, false); break;
            case "state_fried": mIsFried = attrs.getAttributeBooleanValue(i, false); break;
        }
    }
}

<resources>
    <attr name="state_fried" format="boolean" />
    <attr name="state_baked" format="boolean" />
</resources>

完整代码位于https://github.com/literakl/DressUp/tree/states_branch,差异为https://github.com/literakl/DressUp/commit/5995445fc66d1e31abe68d06ee556fdf6416da26