2016-10-02 4 views
2

enter image description hereAlertDialog изменения положительного цвет кнопки

Я хочу изменить цвет для положительной кнопки в Alertdialog, и вот что я делаю ниже:

// style.xml

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

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

Я использую style by:

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

Но что я делаю не работает, я просто хочу изменить цвет кнопки. Я не хочу менять цвет кнопки в java-коде.

Заранее спасибо :-)

Edit-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

@ Дайверы Нет, я не могу так, 'colorAccent' изменит как отрицательный, так и положительный цвет –

+0

Если вам нужно изменить только одну кнопку, вы должны сделать это через java, потому что это хакерское решение, а не следующие дизайнеры андроида. Как это сделать через java - проверьте мою ссылку выше. – Divers

ответ

1

Нет способа сделать это с помощью стилей, потому что в общем случае это неправильно с точки зрения пользовательского интерфейса. Если вы все равно хотите это сделать, просто выполните через java.

+0

Как неправильная форма изменить цвет кнопки диалога со стилями/xml? Вы должны избегать статических изменений пользовательского интерфейса в Java-коде любой ценой. –

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

Надеется, что это помогает! Ура!

+0

«Я не хочу менять цвет кнопки в Java-коде». – Divers

+0

@ Дайверы, если вы знаете, почему бы вам не опубликовать ответ? :/ –

+0

Спасибо, @ibtehaz, я знаю, как изменить цвет текста одной кнопки через java. И метод, который вы опубликовали, действительно прав, но, к сожалению, это не то, что я хочу. –

3

Внимание: решение не рекомендуется, поскольку на самом деле это хакерское решение. Он не следует за дизайном Android и не должен использоваться. И я изменяю положительный цвет кнопки через 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.

Смежные вопросы