如何扩展Android按钮并使用xml布局文件

ajm*_*jma 8 android button

我正在尝试扩展android按钮类并让它使用xml布局文件.

我想使用xml布局文件的原因是我的按钮需要使用样式,据我所知,没有办法以编程方式设置样式.

公共类BuyButton扩展Button {...}

<?xml version="1.0" encoding="utf-8"?>  
<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/customButton"
/>
Run Code Online (Sandbox Code Playgroud)

所以我可以打电话:

new BuyButton(activity);
Run Code Online (Sandbox Code Playgroud)

并让它创建一个应用了样式的按钮.

(我也对获得相同结果的其他方式持开放态度)

adn*_*eal 15

创建一个扩展的类Button.

public class BuyButton extends Button {

    public BuyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

}
Run Code Online (Sandbox Code Playgroud)

在您的XML引用中直接定制类.

<?xml version="1.0" encoding="utf-8"?>  
<your.package.name.BuyButton 
xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/customButton"/>
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了运行时错误.它抱怨xml.04-20 16:30:19.852:E/AndroidRuntime(18583):android.view.InflateException:二进制XML文件行#2:错误输出类client.views.buttons.BuyButtonView (2认同)