gpt4 book ai didi

android - 自定义状态可绘制对象在图书馆项目中不起作用

转载 作者:太空狗 更新时间:2023-10-29 12:57:18 24 4
gpt4 key购买 nike

任何有关如何提供您自己的自定义状态以供在可绘制状态列表选择器中使用的信息的搜索都很少,但几乎所有搜索结果(此处和其他地方)都引用了此 google groups post .

我有这样的 getter 和 setter:(没有包含在上面的帖子中,但使用他们的措辞来保持简单)

public void setFried(boolean fried){
if(mFried != fried){
mFried = fried;
refreshDrawableState();
}
}

public void isFried(){
return mFried;
}

在过去的几个小时里,我一直在努力让它工作,但似乎没有任何效果。它只是简单地不改变外观。我观察了它调用 onCreateDrawableState() 时发生的情况,我观察了更改自定义状态后 getDrawableState() 会发生什么。自定义状态值实际上出现在 drawableState 数组中。

因为我可以看到状态实际上正在合并到数组中,而且它似乎完全忽略了我在选择器中的任何自定义状态,所以我认为 xml 一定是错误的。

这是帖子的建议:

<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/my.app.package">

<item android:drawable="@drawable/item_baked" state_baked="true"
state_fried="false" />
<item android:drawable="@drawable/item_fried" state_baked="false"
state_fried="true" />
<item android:drawable="@drawable/item_overcooked" state_baked="true"
state_fried="true" />
<item android:drawable="@drawable/item_raw" state_baked="false"
state_fried="false" />
</selector>

你真的可以只写 state_fried 和 state_baked 还是它们需要像 app:state_fried 这样的前缀?如果我尝试添加前缀,我会收到如下控制台错误:No resource identifier found for attribute 'state_fried' in package my.app.package

有没有人真正让自定义状态起作用?所引用的帖子是否是使它正常工作所需要的全部内容,或者它是否有问题或丢失?

我不知道这是否有任何区别,但我使用的是 Android 库项目,选择器和 attr.xml 位于库项目中。

谢谢

更新看起来问题是图书馆项目不能很好地使用自定义属性。参见 here , here , here .

不幸的是,还没有看到很多解决方法......

最佳答案

我写了那个原始问题。 IIRC,那是 Android 处于测试阶段的时候,情况发生了一些变化。自定义属性确实有效;我用它们。您确实需要为自定义状态属性添加 app: 前缀。您还需要用您的应用程序包替换 xmlns 声明中的 my.app.package

关于android - 自定义状态可绘制对象在图书馆项目中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4965877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com