9

我正在尝试扩展 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"
/>

这样我就可以打电话了:

new BuyButton(activity);

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

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

4

3 回答 3

15

创建一个扩展类Button

public class BuyButton extends Button {

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

}

在您的 XML 中直接引用该自定义类。

<?xml version="1.0" encoding="utf-8"?>  
<your.package.name.BuyButton 
xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/customButton"/>
于 2012-04-20T23:24:22.757 回答
1

在您的布局 .xml 中,对控件类型进行一行更改(从 Button 更改为您的自定义按钮类型)将解决您的投射问题。

对于您的子类 BuyButton,在 .xml 中找到按钮的部分;它可能看起来像这样:

<Button
            android:id="@+id/btnBuy"
            android:layout_width="188dp"
            android:layout_height="70dp"
            android:padding="12dp"
            android:text="Buy" />

并将其更改为:

<yourpackage.name.BuyButton
            android:id="@+id/btnBuy"
            android:layout_width="188dp"
            android:layout_height="70dp"
            android:padding="12dp"
            android:text="Buy" />
于 2017-05-14T06:08:18.567 回答
-1

请参阅按钮样式部分。只需设置一个自定义背景drawable。

于 2012-04-20T23:27:36.993 回答