2010-10-07 88 views
0

这应该很容易,但由于某种原因,它不工作。我想弄清楚如何做自定义视图,所以我开始做一个简单的覆盖Button,但没有添加任何功能,只是为了确保它能够正常工作。超级简单的自定义视图

的Java(文件FooButton.java):

package com.foo.bar; 

import android.content.Context; 
import android.widget.Button; 

public class FooButton extends Button { 

    public FooButton(Context context) { 
     super(context); 
    } 
} 

XML(main.xml中内):

<view class="com.foo.bar.FooButton" 
android:text="blah" android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/buttonFoo" 
android:textSize="24px" android:paddingLeft="16px" 
android:width="100px" android:textStyle="bold" /> 

如果我取代 “com.foo.bar.FooButton” 与 “按钮” ,一切都很好,我拿到了我的按钮。如果我像上面那样运行它,它会在启动时崩溃,并在logcat中得到:

E/AndroidRuntime(1411):导致:android.view.InflateException:二进制XML文件行#11:错误膨胀类com.foo .bar.FooButton

有些简单我做错了吗?

回答

2

你必须重写构造也需要一个AttributeSet中的版本:

public Button (Context context, AttributeSet attrs) 

这AttributeSet中的项目将包含在XML设置其他值,如:

android:text="blah" android:layout_width="wrap_content" 
+0

哈,是的,这可能是问题所在。甚至没有注意到这是失踪。 – eldarerathis 2010-10-07 20:37:06