【问题标题】:Change style for AlertDialog lower grey panel更改 AlertDialog 下部灰色面板的样式
【发布时间】:2015-04-28 23:51:54
【问题描述】:

什么样式导致 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>

它看起来像这样:

【问题讨论】:

  • 为什么不在对话框中创建自己的自定义布局?
  • 好主意!我正在尝试,但结果变得更加困难。如果您查看上图,您会看到细灰色边框周围有一条黑色带。这不是对话框布局的一部分,而是由构建器添加的。不知道如何摆脱它或使用它。
  • 在这里找到我的答案:stackoverflow.com/questions/25174165/…
  • 我给了你一个赞成票。不过,我要补充一点,即使这也不直观。您不能使用任何警报构建器方法向对话框添加内容。您甚至无法将按钮命名为“button1”并从中获得响应。基本上,您必须自己完成整个对话框和 OnClick 处理程序。仍然值得,因为您可以通过其半模态行为将弹出窗口显示在合理的位置。
  • 我也在这里发布我的完整工作代码。

标签: android android-alertdialog android-theme


【解决方案1】:

这是一个可行的解决方案,基于 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2021-01-19
    • 2015-12-22
    • 2017-01-23
    • 2016-10-29
    • 2021-06-27
    • 2019-04-11
    相关资源
    最近更新 更多