为什么我的自定义控件从一个视图解析动画资源,而不是另一个视图?
我有一个继承自TextView
的自定义控件。在我的Initialize方法中,我得到了以下内容。
private void Initialize(IAttributeSet attrs)
{
var a = _context.Theme.ObtainStyledAttributes(attrs, Resource.Styleable.FontIconTextView, 0, 0);
// work with animations
_animationResource = a.GetResourceId(Resource.Styleable.FontIconTextView_Animation, 0);
_animation = AnimationUtils.LoadAnimation(_context, _animationResource);
Animate = a.GetBoolean(Resource.Styleable.FontIconTextView_Animate, false);
Initialize();
}
我有一个定义所有local
属性的资源。
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<declare-styleable name="FontIconTextView">
<attr name="Animate" format="boolean" />
<attr name="Animation" format="integer" />
</declare-styleable>
</resources>
然后在我的启动画面上,我有以下控件正在工作按预期
<FontIconTextView
android:id="@+id/Splashscreen_QuickSync_Icon"
android:text="@string/icon_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:padding="10dp"
android:textSize="20dp"
android:clickable="false"
android:textColor="#00bbe6"
android:layout_gravity="right"
local:Animate="true"
local:Animation="@anim/sync_rotate" />
启动屏幕加载,_animationResource = 2130968576
但是,我的RootView上有类似的代码
<FontIconTextView
android:id="@+id/RootView_QuickSync_Icon"
android:text="@string/icon_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:padding="10dp"
android:layout_centerVertical="true"
android:textSize="20dp"
android:clickable="false"
android:textColor="#ffffff"
local:MvxBind="Command QuickSyncCommand; Animate Animate"
local:Animation="@anim/sync_rotate"/>
当我运行它时,_animationResource = 0
我得到以下异常
android.view.InflateException:二进制XML文件行#1:错误输出类FontIconTextView
Android.Views.InflateException:正在加载...
程序'Mono'已退出,代码为0(0x0)。
现在我不确定两者之间有什么区别,但是我无法从SplashScreen而不是RootView访问@anim/sync_rotate
。