2013-07-27 18 views
5

AlertDialog.Builderのボタンの色を変更しようとしていますが、それを行う方法が見つかりませんでした。AlertDialog.Builderボタンの色を変更する

HOLOテーマのように、ボタンの色とタイトルを白に変更したいと思います。

は例のために、これらの2枚のスクリーンショットを参照してください。

enter image description here

enter image description here

アイブ氏はここに見えた:

How to change theme for AlertDialog

Change the style of AlertDialog

How to change the background of the custom alert dialog

Applying Styles Android

それらのすべては私のために働いていません。ここで

は私のコードです:私は、これは非常に古い質問ですけど

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="dialogStyle" parent="android:Theme.Dialog"> 
     <item name="android:background">@color/white</item> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:button">@color/white</item> 
    </style>  
</resources> 

答えて

17

が、私は同じ問題に出くわしたと私が見つけた:

public void logInDialog() 
{ 
    ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.dialogStyle); 
    AlertDialog.Builder builder = new AlertDialog.Builder(ctw); 
    builder.setTitle("Log in"); 
    View prefView = View.inflate(this, R.layout.log_in, null); 
    //The rest of the code......... 
} 

は、これは私のスタイルのコードです溶液。使用

public void logInDialog() 
{ 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    LayoutInflater inflater = context.getLayoutInflater(); 

    //setting custom view for our dialog 
    View myview = inflater.inflate(R.layout.YOUR_CUSTOM_LAYOUT, null); 
    builder.setNeutralButton(android.R.string.cancel, null); 
    builder.setView(myview); 

    //creating an alert dialog from our builder. 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 

    //retrieving the button view in order to handle it. 
    Button neutral_button = dialog.getButton(DialogInterface.BUTTON_NEUTRAL); 

    Button positive_button = dialog.getButton(DialogInterface.BUTTON_POSITIVE); 


    if (neutral_button != null) { 
     neutral_button.setBackgroundDrawable(context.getResources() 
         .getDrawable(R.drawable.custom_background)); 

     neutral_button.setTextColor(context.getResources() 
         .getColor(android.R.color.white)); 
    } 
    if (positive_button != null) { 
     positive_button.setBackgroundDrawable(context.getResources() 
         .getDrawable(R.drawable.custom_background)); 

     positive_button.setTextColor(context.getResources() 
         .getColor(android.R.color.white)); 
    } 

} 

そして、あなたのボタンのXMLS:あなたはこのような何かをすべき警告ダイアログのボタン内のテキストの色を変更するために

custom_background.xmlを

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item android:drawable="#000000"/> 
    <item android:drawable="@drawable/selectable_item_background"/> 

</layer-list> 

そしてselectable_item_background.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/item_pressed" android:state_pressed="true"/> 
    <item android:drawable="@drawable/item_focused" android:state_focused="true"/> 
    <item android:drawable="@drawable/item_focused" android:state_selected="true"/> 
    <item android:drawable="@android:color/transparent"/> 

</selector> 

私は個人的にフラグメント内でこのコードを使用しました。これがLayoutInflaterを持っている理由です。あなたの場合、このステップをスキップすることができます。 将来的に他の人に役立つことを願っています。

+1

グレート、おかげでトン! – Malfunction

0

ボタンAlertDialogのボタンの色を変更します。

// Initialize AlertDialog & AlertDialog Builder 
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this); 
builder.setTitle(R.String.AlertDialogTitle); 
........... 
......... 
//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

は@にIoumarosの答えをフォローアップするために、setBackgroundDrawableは現在廃止されています。あなたは、このコードで同じ背景色の変化を達成することができます

Button negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE); 
    negativeButton.setBackgroundColor(getResources().getColor(R.color.colorBackground)); 

    Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
    positiveButton.setBackgroundColor(getResources().getColor(R.color.colorBackground)); 

しかし、通常、最善の方法と考えられていないプログラム的にこれをやって...

関連する問題