2016-10-02 28 views
2

enter image description hereAlertDialog変更正のボタンの色

私はここAlertdialogに正のボタンの色を変更したい、と私は以下のやっていることですスタイル:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogCustom); 

私はやっているのは機能していない、私はちょうどポジティブなボタンの色を変更したい。私はJavaコードでボタンの色を変更したくない。

編集-1 AlertdialogレイアウトXML

<android.support.v7.internal.widget.ButtonBarLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/buttonPanel" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layoutDirection="locale" 
android:orientation="horizontal" 
android:paddingLeft="12dp" 
android:paddingRight="12dp" 
android:paddingTop="4dp" 
android:paddingBottom="4dp" 
android:gravity="bottom" 
app:allowStacking="@bool/abc_allow_stacked_button_bar" 
style="?attr/buttonBarStyle"> 

<Button 
    android:id="@android:id/button3" 
    style="?attr/buttonBarNeutralButtonStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<android.support.v4.widget.Space 
    android:id="@+id/spacer" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:visibility="invisible" /> 

<Button 
    android:id="@android:id/button2" 
    style="?attr/buttonBarNegativeButtonStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<Button 
    android:id="@android:id/button1" 
    style="?attr/buttonBarPositiveButtonStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

+0

それはあなたの質問に答えませんか? - http://stackoverflow.com/a/31514677/632516? – Divers

+0

@Diversいいえ、私はこのようにすることはできません、 'colorAccent'は負と正の両方の色を変更します –

+0

ボタンを1つだけ変更する必要があるなら、それはハックな解決策であり、アンドロイドどのようにjava経由でそれを行う - 上記の私のリンクを確認してください。 – Divers

答えて

1

一般的に、UIの観点からはスタイルが間違っているので、スタイルで行う方法はありません。とにかくそれをやりたければ、java経由でやりなさい。

+0

styles/xmlを使用してダイアログのボタンの色を変更する方法は間違っていますか?あなたは、JavaコードでスタティックなUI変更を行うことを避けてください。 –

2
builder.setOnShowListener(new OnShowListener() { 
    @Override 
    public void onShow(DialogInterface arg0) { 
     builder.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(COLOR_YOU_WANT); 
    } 
} 

:-)事前に

おかげで、それがお役に立てば幸い!乾杯!

+0

"Javaコードでボタンの色を変更したくありません。" – Divers

+0

@Diversあなたが知っていれば、なぜ答えを投稿しないのですか? :/ –

+0

とにかく@ibtehazありがとう、私はどのようにJavaを介してシングルボタンのテキストの色を変更する方法を知っている。あなたが投稿した方法は本当に正しいですが、申し訳ありませんが、私が望むものではありません。 –

3

注意:これは実際にはハックの解決策であるため、解決策は推奨されません。それはアンドロイドデザインに従っていないので使用しないでください。そして私はJavaを介してポジティブボタンの色を変更します。これを指摘する@Diversに感謝します。

のstyles.xml

<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="buttonBarPositiveButtonStyle">@style/positive</item> 
</style> 

<style name="positive"> 
    <item name="android:textColor">@color/accent</item> 
</style> 

使用

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogCustom); 

たぶんここにあなたがbuttonBarPositiveButtonStyleないandroid: buttonBarPositiveButtonStyle、に注意する必要があります1点です。

関連する問題