我对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中而没有编译或运行时错误吗?
谢谢!!!
答案 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元素。
至于类:你只需要覆盖派生类中的所有抽象方法/构造函数。