2015-05-14 44 views
7

我正在嘗試從appcompat v7 22.1.1開始的新的AlertDialogAppcompat警報對話框操作按鈕背景處於按下狀態

它工作得很好(在所有的android版本),如圖像。

enter image description here

風格AlertDialog是這樣的。 (現在我使用硬編碼的顏色值,而不是顏色資源)

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

      <item name="colorPrimaryDark">#111111</item> 

      <item name="colorPrimary">#00ddff</item> 

      <item name="colorAccent">#0044aa</item> 

      <item name="colorButtonNormal">#00aaaa</item> 

      <item name="colorControlHighlight">#00ddff</item> 

      <item name="alertDialogTheme">@style/AlertDialogTheme</item> 

</style> 
<style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert"> 
       <item name="colorAccent">#0044aa</item> 
       <item name="android:background">#ffffff</item> 
       <item name="android:textColorPrimary">#000000</item> 
       <item name="android:windowTitleStyle">@style/MyTitleTextStyle</item> 
</style> 

<style name="MyTitleTextStyle"> 
       <item name="android:textColor">#0044aa</item> 
       <item name="android:textAppearance">@style/TextAppearance.AppCompat.Title</item> 
</style> 

我的問題是,

1)如何改變其四捨五入(灰色)圖像中的顏色statePressed?

2)android> = 21沒有按下顏色,這是什麼?

3)我怎樣纔能有不同顏色的動作按鈕(可能)?

任何幫助將是偉大的。

回答

15

您可以使用樣式屬性如

  • buttonBarButtonStyle
  • buttonBarNegativeButtonStyle
  • buttonBarNeutralButtonStyle
  • buttonBarPositiveButtonStyle

例子:

<style name="dialog_theme" parent="Theme.AppCompat.Dialog.Alert"> 
    <item name="buttonBarNegativeButtonStyle">@style/dialog_button.negative</item> 
    <item name="buttonBarPositiveButtonStyle">@style/dialog_button.positive</item> 
</style> 

<style name="dialog_button"> 
    <item name="android:textStyle">bold</item> 
    <item name="android:minWidth">64dp</item> 
    <item name="android:paddingLeft">8dp</item> 
    <item name="android:paddingRight">8dp</item> 
    <item name="android:background">@drawable/dialogButtonSelector</item> 
</style> 

<style name="dialog_button.negative"> 
    <item name="android:textColor">#f00</item> 
</style> 

<style name="dialog_button.positive"> 
    <item name="android:layout_marginLeft">8dp</item> 
    <item name="android:textColor">#00f</item> 
</style> 

其中dialogButtonSelector是我們的自定義可繪製選擇器。

不幸設置背景dialog_button破壞我們的填充和邊距,所以我需要重新設置它。

dialog_button風格可以通過Widget.AppCompat.Button.ButtonBar.AlertDialog繼承,但我發現它有缺少風格,如textStylebold

+0

接受答案的時間很晚。 Thnx的偉大答案和工作良好。 –

2

我對第三屆問題應答
(怎樣纔可以有操作按鈕不同的顏色(有可能)?)

代碼:

// Initialize AlertDialog & AlertDialog Builder 
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this); 
builder.setTitle("AlertDialog Title"); 
........... 
......... 
//Build your AlertDialog 
AlertDialog Demo_alertDialog= builder.create(); 
Demo_alertDialog.show(); 

//For Positive Button: 
Button b_pos; 
b_pos=Demo_alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
if(b_pos!=null){ 
    b_pos.setTextColor(getResources().getColor(R.color.YourColor)); 
    }  


//For Neutral Button: 
Button b_neu; 
b_neu=Demo_alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL); 
if(b_neu!=null){ 
    b_neu.setTextColor(getResources().getColor(R.color.YourColor)); 
    } 

//For Negative Button: 
Button b_neg; 
b_neg=Demo_alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
if(b_neg!=null){ 
    b_neg.setTextColor(getResources().getColor(R.color.YourColor)); 
    } 

編碼快樂:)

+0

這是一個不錯的嘗試。但我想要它的主題。接受的答案很好。雖然代碼版本爲+1。 –

+0

謝謝。快樂編碼:) –

0

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setMessage( 「標題」); builder.setCancelable(真);

builder.setPositiveButton("OK", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 

      } 
     }); 

builder.setNegativeButton("Cancel", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.cancel(); 
      } 
     }); 

AlertDialog alertdialog = builder.create(); 
alertdialog.show(); 

Button nbutton = alertdialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
nbutton.setBackground(getResources().getDrawable(R.drawable.btn_press_white_rect)); 

Button pbutton = alertdialog.getButton(DialogInterface.BUTTON_POSITIVE); 
pbutton.setBackground(getResources().getDrawable(R.drawable.btn_press_white_rect)); 

     **btn_press_white_rect.xml** 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" android:drawable="@drawable/rounded_rect_yellow" ></item> 
<item android:state_pressed="false" android:drawable="@drawable/rounded_rect_white" ></item> 
</selector> 
相關問題