AlertDialog更改正按钮颜色

时间:2016-10-02 05:28:00

标签: android alertdialog material

enter image description here

我想在package Samples; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; public class Percussion { private byte[] audioBytes = null; public Percussion(String type) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); BufferedInputStream in; try { in = new BufferedInputStream(new FileInputStream("samples/"+type+".wav")); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("ERROR :: NO INSTRUMENT FOUND"); e.printStackTrace(); return; } int read; byte[] buff = new byte[1024]; while ((read = in.read(buff)) > 0) { out.write(buff, 0, read); } out.flush(); audioBytes = out.toByteArray(); System.out.println(audioBytes.length); /*for(int i = 0 ; i< audioBytes.length ; i++){ System.out.println(audioBytes[i]); }*/ } public byte[] getAudioBytes() { return audioBytes; } public void setAudioBytes(byte[] audioBytes) { this.audioBytes = audioBytes; } } 中更改正面按钮的颜色,以下是我在下面做的事情:

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

但我正在做的事情不起作用,我只是想改变正面的按钮颜色。我不想在java代码中更改按钮的颜色。

提前致谢: - )

修改-1 Alertdialog layout xml

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

3 个答案:

答案 0 :(得分:5)

注意:建议不要使用该解决方案,因为这实际上是一个hacky解决方案。它不遵循Android设计,不应该使用。我通过java更改正面按钮颜色。感谢@Divers指出这一点。

styles.xml

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

用法

buttonBarPositiveButtonStyle

也许这里有一点你应该注意,android: buttonBarPositiveButtonStyle而不是.card:hover .icon{animation: sprite-flip 1s steps(59) 1 forwards ;}

答案 1 :(得分:2)

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

希望它有所帮助!干杯!

答案 2 :(得分:0)

没有办法通过样式来实现,因为从UI的角度来看通常是错误的。无论如何你想要这样做,只需通过java。