2013-09-23 72 views
1

這裏是我的confirm__button.xmlAndroid的自定義按鈕擴展按鈕重用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> 

TestActivity.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風格。

+2

您未使用自定義按鈕 – Raghunandan

回答

1

只要投射到您的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靜態類,或將它分成一類是自己的。