AlertDialog change positive button color
我想更改
//
1 2 3 4 5 6 7 | <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> |
我通过以下方式使用样式:
1 | AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogCustom); |
但是我正在做的事情没有用,我只想更改正面按钮的颜色。 我不想在Java代码中更改按钮的颜色。
提前致谢 :-)
编辑1
Alertdialog布局xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <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" /> |
注意:不建议使用该解决方案,因为这实际上是一个骇人听闻的解决方案。 它没有遵循android设计,因此不应使用。 而且我通过Java更改了正按钮的颜色。 感谢@Divers指出这一点。
styles.xml
1 2 3 4 5 6 7 | <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> |
用法
1 | AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AlertDialogCustom); |
也许这是您应注意的一点,
1 2 3 4 5 6 | builder.setOnShowListener( new OnShowListener() { @Override public void onShow(DialogInterface arg0) { builder.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(COLOR_YOU_WANT); } } |
希望能帮助到你! 干杯!
无法通过样式进行操作,因为通常从UI角度来看这是错误的。 如果仍然要执行此操作,请通过Java执行。