2011-12-08 42 views
0

我試圖將子類Button,但我啓動我的項目時有很多錯誤。你可以看看並告訴我如何解決這個問題嗎? (我有可能50個錯誤來了)Android的子類按鈕:很多錯誤

package my.project.name; 

import android[...] 

public class MyButton extends Button { 

    public MyButton(){ 
     super(null); 
    } 

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

    public MyButton(Context context, AttributeSet attrs){ 
     super(context, attrs); 
    } 

    public MyButton(Context context, AttributeSet attrs, int defStyle){ 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onDraw(Canvas canvasObject) { 
     super.onDraw(canvasObject); 
     int x = 100; 
     int y = 100; 
     int width = 80; 
     int height = 200; 
     Paint thePaint = new Paint(); 
     thePaint.setColor(Color.WHITE); 
     RectF rectangle1 = new RectF(x,y,x+width,y+height); 
     canvasObject.drawRoundRect(rectangle1, 10.0f, 10.0f, thePaint); 
    } 

} 

主類:

package my.project.name; 

import android.app.Activity; 
import android.os.Bundle; 

public class MyProjectActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

和XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 

    <MyButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/myb" 
     android:tag="tag" 
     /> 

</LinearLayout> 

編輯:實際上,矩形顯示不出來,子類的作品,因爲我沒有錯誤,但矩形只是不可見,即使背景爲「@空」...

非常感謝

+2

嗯,有哪些誤區?這是一個重要的細節。有一件事我不看好,你必須在XML中使用你的按鈕的完全限定名。 (例如'my.project.name.MyButton') – kcoppock

+1

i!= I ......... – Shoban

+1

請添加一些您收到的錯誤。你也必須在你的xml中編寫完全限定的命名空間。像

回答

3

重命名

<MyButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/myb" 
    android:tag="tag" 
    /> 

到一個完全合格的命名空間

<namespace.from.button.MyButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/myb" 
    android:tag="tag" 
    /> 
+0

謝謝Rafael,關於構造函數,是否所有的構造函數都必須在子類中重寫?或者這可能會導致錯誤?需要 – Paul

+0

構造函數取決於您對Button的使用:MyButton(Context)通常在Java中調用。你從XML中膨脹Button,所以你只需要Button(Context,AttributeSet)。 –

+0

謝謝,再次抱歉,我不想問太多,但我編輯我的帖子:子類在啓動時不包含任何錯誤,但「矩形」不顯示在屏幕上...你知道爲什麼嗎? – Paul