2013-05-30 41 views
1

我不滿意Android SDK提供的默認ImageButton項目,我想定義自己的ImageButton(讓我們稱之爲SquareImageButton),它從ImageButton擴展。Android/Java:如何定義可在xml佈局文件中使用的特定類?

我啥都創建一個類是這樣的:

public class SquareImageButton extends ImageButton { 

// Here I want to include some code which would for example 
// force the width of the SquareImageButton to be equal to its height 
// And many other things !!! 

} 

現在我想用這個SquareImageButton在XML一樣,我會用一個平常的ImageButton。例如像這樣:

<SquareImageButton 
      android:id="@+id/speakButton" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:src="@drawable/icon_rounded_no_shadow_144px" 
      /> 

應該如何我在SquareImageButton類寫這樣做呢?任何其他事情要做到能夠包括我的SquareImageButton在我的XML沒有編譯或運行時錯誤?

謝謝!

+0

您必須添加的軟件包名稱: –

回答

0

你只需要使用class屬性,你就完成了。

 <Button 
     class="com.example.SquareImageButton" 
     android:id="@+id/speakButton" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:src="@drawable/icon_rounded_no_shadow_144px" 
     /> 

您可以使用findById方法在Activity例如像任何BUIT合件吧。

至於類:你只需要覆蓋派生類中的所有抽象方法/構造函數。

2

我應該如何在我的SquareImageButton類中寫入來做到這一點?

我會凌駕於ImageButton提供的,尤其是ImageButton(Context context, AttributeSet attrs)的所有構造函數,因爲這應該是佈局通脹所使用的。確保類和這些構造函數是public。這應該是你需要的一切。

請注意,您需要將類名完全限定爲XML元素(<com.regis.ag.SquareImageButton>),因爲您的班級不在像android.widget這樣的知名軟件包中。

+0

我公開向構造函數和適配器類。謝謝 –

1

嘗試entreing您的全包名:

<com.your.package.name.SquareImageButton 
     android:id="@+id/speakButton" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:src="@drawable/icon_rounded_no_shadow_144px" 
     /> 
相關問題