2010-10-07 90 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