更改 AlertDialog 下部灰色面板的样式

Change style for AlertDialog lower grey panel

什么样式导致 AlertDialog 底部出现灰色条?

要么我需要更改对话框的其余部分以匹配颜色,反之亦然。我试过修改@android:buttonStyle 和@android:buttonBarStyle。这有帮助,但仍然有一些灰色从该区域的边缘向外窥视。

这是我目前的风格:

<style name="MyAlertDialog" parent="@android:style/Theme.Dialog">
  <item name="@android:background">#FF000000</item>
  <item name="@android:buttonBarStyle">@style/MyButtonBar</item>
</style>

<style name="MyButtonBar" parent="@android:style/ButtonBar">
  <item name="@android:background">#FF000000</item>
</style>

看起来像这样:

这是一个可行的解决方案,基于 Rod_Algonquin 使用自定义布局的想法。

  private void showCustomAlert (String message)
  {
    // build dialog
    LayoutInflater inflater = getLayoutInflater();
    View alertView = inflater.inflate (R.layout.custom_dialog, null);
    AlertDialog.Builder builder = new AlertDialog.Builder (this, R.style.CustomAlertDialog);
    builder.setView (alertView);
    final AlertDialog alert = builder.create();

    // message
    ((TextView)alertView.findViewById (R.id.message)).setText (message);

    // ok button
    alertView.findViewById (R.id.cancel).setOnClickListener (new View.OnClickListener()
    {
      @Override public void onClick(View v) { alert.dismiss(); }
    });

    // show
    alert.show();
  }

下面是适用于此代码的布局:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:background="#FF000000">

  <TextView android:id="@+id/alertTitle"
      android:singleLine="true"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:minHeight="50dp"
      android:gravity="center"
      android:background="@android:color/black"
      android:textColor="@android:color/white"
      android:textAppearance="@android:style/TextAppearance.Large"
      android:text="@string/custom_alert_title" />

  <TextView android:id="@+id/message"
      style="@android:attr/textAppearanceMedium"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:padding="20dp"
      android:background="@android:color/black"
      android:textColor="@android:color/white"
      android:textAppearance="@android:style/TextAppearance.Medium" />

  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:gravity="center"
      android:background="@android:color/black"
      android:measureWithLargestChild="true">

    <Button android:id="@+id/cancel"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:minHeight="50dp"
        android:minWidth="100dp"
        android:textSize="14sp"
        android:text="@android:string/ok" />
  </LinearLayout>
</LinearLayout>

最后,这是我参考的 styles.xml 中的样式;根据您的对话框着色,您可能不需要它们。

  <style name="CustomAlertDialog" parent="@android:style/Theme.Dialog">
    <item name="@android:background">#FF000000</item>
    <item name="@android:buttonBarStyle">@style/CustomButtonBar</item>
  </style>

  <style name="CustomButtonBar" parent="@android:style/ButtonBar">
    <item name="@android:background">#FF000000</item>
  </style>