Android / Java:如何定义xml布局文件中可用的特定类?

时间:2013-05-30 09:06:43

标签: java android xml eclipse layout

我对Android SDK提供的默认ImageButton项目不满意,我想定义自己的ImageButton(我们称之为SquareImageButton),它从ImageButton扩展而来。

我因此创建了一个这样的类:

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 !!!

}

现在我想在xml中使用这个SquareImageButton,就像我使用通常的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中而没有编译或运行时错误吗?

谢谢!!!

3 个答案:

答案 0 :(得分:2)

  

我应该如何在SquareImageButton类中编写这样做?

我会覆盖ImageButton提供的所有构造函数,尤其是ImageButton(Context context, AttributeSet attrs),因为它应该是布局膨胀所使用的构造函数。确保类和这些构造函数为public。这应该是你所需要的一切。

请注意,您需要将类名称完全限定为XML元素(<com.regis.ag.SquareImageButton>),因为您的类不在android.widget等众所周知的包中。

答案 1 :(得分:1)

尝试获取您的完整包名:

<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"
       />

答案 2 :(得分: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-in元素。

至于类:你只需要覆盖派生类中的所有抽象方法/构造函数。