Android 棒棒糖的颜色变化

Android 棒棒糖的颜色变化,android,android-5.0-lollipop,android-dialog,android-dialogfragment,Android,Android 5.0 Lollipop,Android Dialog,Android Dialogfragment,我希望我的片段与我应用的应用程序和调色板的其余部分保持一致,因此我不仅要更改标题的颜色,还要更改正/负按钮的颜色: 我试着这样做,但不幸的是它不起作用: public void onStart() { super.onStart(); Dialog d = getDialog(); int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivide

我希望我的片段与我应用的应用程序和调色板的其余部分保持一致,因此我不仅要更改标题的颜色,还要更改正/负按钮的颜色:

我试着这样做,但不幸的是它不起作用:

public void onStart() {
        super.onStart();
        Dialog d = getDialog();
        int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null);
        View divider = d.findViewById(dividerId);

        if(currentapiVersion< Build.VERSION_CODES.LOLLIPOP) {
            divider.setBackgroundColor(getResources().getColor(R.color.accent));
            LinearLayout ll = (LinearLayout) d.findViewById(R.id.dialog_background);
            ll.setBackgroundResource(R.drawable.backrepeat_reversed);
        }
        if(currentapiVersion == Build.VERSION_CODES.LOLLIPOP) {
            int buttonsId = d.getContext().getResources().getIdentifier("android:id/negativeButton", null, null);
            Button b = (Button) d.findViewById(buttonsId);
            b.setTextColor(getResources().getColor(R.color.accent));
        }
        int textViewId = d.getContext().getResources().getIdentifier("android:id/alertTitle", null, null);
        TextView tv = (TextView) d.findViewById(textViewId);

        tv.setTextColor(getResources().getColor(R.color.accent));
    }
public void onStart(){
super.onStart();
Dialog d=getDialog();
int-dividerId=d.getContext().getResources().getIdentifier(“android:id/titleDivider”,null,null);
视图分隔符=d.findViewById(分隔符);
如果(当前APIVersion

如何更改这些按钮的颜色?也许可以通过styles.xml文件在整个应用程序中执行此操作?

如果您可以使用
AlertDialog
创建对话框,以下内容对我有用:

public class DialogTest extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity()).setTitle("Test")
                .setMessage("This is a dialog.")
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }
                })
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }
                }).show();
    }

    @Override
    public void onStart() {
        super.onStart();
        ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.RED);
        ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.RED);
    }
}

要更改“警报”对话框中显示的按钮和复选框的颜色,可以编辑:

values-21/styles.xml


...
@样式/警报对话框自定义
@样式/警报对话框自定义
@样式/警报对话框自定义
#00397F
#0AAEEF
这将使对话框具有按钮文本和复选框的选定颜色:

values-21/styles.xml


...
@样式/警报对话框自定义
@颜色/按钮\u颜色

在棒棒糖和更高版本中,你不应该使用
android:
prefix

非常有效!你为我节省了很多时间。在这个大项目中,这是最好的解决方案。
<style name="AppTheme" parent="...">
  ...
  <item name="android:timePickerDialogTheme">@style/AlertDialogCustom</item>
  <item name="android:datePickerDialogTheme">@style/AlertDialogCustom</item>
  <item name="android:alertDialogTheme">@style/AlertDialogCustom</item>
</style>

<style name="AlertDialogCustom" parent="android:Theme.Material.Light.Dialog.Alert">
  <item name="android:colorPrimary">#00397F</item>
  <item name="android:colorAccent">#0AAEEF</item>
</style>
<style name="AppTheme" parent="...">
  ...
  <item name="alertDialogTheme">@style/AlertDialogCustom</item>
</style>


<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">@color/buttons_color</item>
</style>