1

这是我的确认__button.xml

<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ConfirmButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/buttonConfirm"  >
</Button>

这是我的styles.xml

<resources>
     <style name="buttonConfirm" parent="@android:style/Widget.Button">
        <item name="android:textColor">#FFFFFF</item>
        <item name="android:textSize">15dip</item>
        <item name="android:background">@drawable/ok_button_style</item>
        <item name="android:focusable">true</item>
        <item name="android:clickable">true</item>
    </style>
</resources>

这是我的 ok_button_style.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" >
        <shape>
          <gradient
              android:startColor="#F6974F"
              android:centerColor="#F58A39"
              android:endColor="#F48028"
              android:angle="270" />
          <stroke
              android:width="1dp"
              android:color="#F37C22" />
          <corners
              android:radius="6dp" />
          <padding
              android:left="10dp"
              android:top="10dp"
              android:right="10dp"
              android:bottom="10dp" />
        </shape>
  </item>
  <item android:state_focused="true" >
        <shape>
          <gradient
              android:startColor="#F6974F"
              android:centerColor="#F58A39"
              android:endColor="#F48028"
              android:angle="270" />
          <stroke
              android:width="2dp"
              android:color="#F48028" />
          <corners
              android:radius="6dp" />
          <padding
              android:left="10dp"
              android:top="10dp"
              android:right="10dp"
              android:bottom="10dp" />
        </shape>
  </item>
  <item android:state_enabled="true" >
        <shape>
          <gradient
              android:startColor="#F48028"
              android:centerColor="#F58A39"
              android:endColor="#F6974F"
              android:angle="270" />
          <stroke
              android:width="1dp"
              android:color="#F5812A" />
          <corners
              android:radius="6dp" />
          <padding
              android:left="10dp"
              android:top="10dp"
              android:right="10dp"
              android:bottom="10dp" />
        </shape>
  </item>
    <item android:state_enabled="false" >
        <shape>
          <solid
              android:color="#FFB380" />
          <stroke
              android:width="1dp"
              android:color="#FFA366" />
          <corners
              android:radius="6dp" />
          <padding
              android:left="10dp"
              android:top="10dp"
              android:right="10dp"
              android:bottom="10dp" />
        </shape>
  </item>
  <item>
      <shape>
          <gradient
              android:startColor="#F48028"
              android:centerColor="#F58A39"
              android:endColor="#F6974F"
              android:angle="270" />
          <stroke
              android:width="1dp"
              android:color="#F37C22" />
          <corners
              android:radius="6dp" />
          <padding
              android:left="10dp"
              android:top="10dp"
              android:right="10dp"
              android:bottom="10dp" />
        </shape>
  </item>
</selector>

测试活动.java

public class TestActivity extends Activity {
private Button btnConfirm;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        btnConfirm = (ConfirmButton)findViewById(R.id.confirmButton1);

        btnConfirm.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                btnConfirm.setEnabled(false);
            }
        });
    }
}

public class ConfirmButton extends Button{

    public ConfirmButton(Context context) {
        super(context);
    }

    public ConfirmButton(Context context, AttributeSet attrs) {
        this(context, attrs, R.layout.confirm__button);
    }

    public ConfirmButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
}

我不明白为什么btnConfirm没有buttonConfirm风格。

4

1 回答 1

2

只是投射到您的 ConfirmButton 不会“改变”按钮的类型。您需要更改以更改您的 XML 以实际引用您的类。我不知道你的包裹,但是,

去做这个:

<com.your.package.TestActivity$ConfirmButton xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ConfirmButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/buttonConfirm"  >
</com.your.package.TestActivity$ConfirmButton>

您还应该将 ConfirmButton 设为静态类,或者将其移至它自己的类中。

于 2013-12-09T21:49:32.470 回答