【问题标题】:How to make the title and positive/negative buttons black in an Alert Dialog如何在警报对话框中使标题和正/负按钮变黑
【发布时间】:2018-03-03 02:49:17
【问题描述】:

我当前的警报对话框看起来像右边的那个,我希望它看起来像左边的那个。

我想我可以通过更改自定义对话框的主题来做到这一点,但我不确定这是否正确,如果是,那么如何进行? 无论如何我可以自定义更改正/负按钮吗?

我不想创建自定义对话框,因为按钮在警报对话框中显示的方式非常适合我。

类似http://developer.android.com/guide/topics/ui/dialogs.html右边的那个

这是我到目前为止所做的,

    AlertDialog.Builder builder = new AlertDialog.Builder(LoginSignupActivity.this);
    LayoutInflater inflater = getLayoutInflater();  
    builder.setView(inflater.inflate(R.layout.newusersignup, null)).setTitle("Sign up");
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {}
    //etc

我的 xml 看起来像

<TextView
    android:id="@+id/newUsersTxtName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Enter your name"
    android:textColor="@color/white"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/newUserTxtPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/newUsersName"
    android:text="Enter password"
    android:textColor="@color/white" />

<EditText
    android:id="@+id/newUsersName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/newUsersTxtName"
    android:ems="10"
    android:textColor="@color/white"
    android:inputType="text" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/newUserPassword"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/newUserTxtPassword"
    android:ems="10"
    android:textColor="@color/white"
    android:inputType="textPassword" />

<EditText
    android:id="@+id/newUserEmail"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/newUserTxtEmail"
    android:ems="10"
    android:textColor="@color/white"
    android:inputType="textEmailAddress" />

<TextView
    android:id="@+id/newUserTxtEmail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/newUserPassword"
    android:text="Enter your email"
    android:textColor="@color/white"
    android:textAppearance="?android:attr/textAppearanceSmall" />

【问题讨论】:

    标签: java android xml android-alertdialog


    【解决方案1】:

    我将通过“styles.xml”中的自定义样式进行更改,例如

        <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <style name="AlertDialogCustom" parent="@android:style/AlertDialog">
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
        <item name="android:textSize">10sp</item>
    </style>
    

    Source

    也可以通过编程方式进行:

    AlertDialog.Builder customBuilder = new AlertDialog.Builder(new ContextThemeWrapper(this,android.R.style.Theme_Dialog));
    
    customBuilder.setTitle(R.string.popup_error_title);
    customBuilder.setNegativeButton("Exit application", new DialogInterface.OnClickListener() {  
                    public void onClick(DialogInterface dialog, int which) {  
                        MyActivity.this.finish();
                    }  
            });
    AlertDialog dialog = customBuilder.create();
        dialog.show();
    
    Button b = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
    if(b != null)
            b.setBackgroundDrawable(getResources().getDrawable(R.drawable.my_button))
    

    Source

    编辑:styles.xml 文件将放在\main\res\values 文件夹中

    【讨论】:

    • 但是自定义样式将如何更改警报对话框的正/负按钮背景?
    • 您可以像@Questing 所说的那样将样式应用于警报。
    【解决方案2】:

    你可以像doydoy那样定义自己的AlertDialog风格,然后用这种方式简单地创建AlertDialog.Builder

    AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.style_name);
    

    否则,您可以尝试定义自己的应用主题并覆盖android:alertDialogStyle,而无需接触代码以获得统一的用户体验。 https://sites.google.com/site/androidhowto/how-to-1/customize-alertdialog-theme

    【讨论】:

      【解决方案3】:

      使用此方法,您可以更改尺寸颜色和其他一些功能

      dialog = alertdialogbuilder.create();
      
              dialog.setOnShowListener(new DialogInterface.OnShowListener() {
                  @Override
                  public void onShow(DialogInterface dlg) {
                      dialog.getButton(Dialog.BUTTON_POSITIVE).setTextSize(20); // set text size of positive button
                      dialog.getButton(Dialog.BUTTON_POSITIVE).setTextColor(Color.RED); set text color of positive button
      
                      dialog.getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); // set title and message direction to RTL
                  }
              });
              dialog.show();
      

      【讨论】:

      • 您已将 sn-p 的 javascript 部分放在 HTML 部分,因此单击“运行代码 sn-p”不起作用。
      • 亚当巴恩斯 tnx
      【解决方案4】:

      这对我有用,它基本上将 Holo 主题应用于我的特定活动

      res/values/styles.xml

      <?xml version="1.0" encoding="utf-8"?>
      <resources>
              <style name="default_activity_theme" parent="@android:style/Theme.Holo"/>
      </resources>
      

      AndroidManifest.xml

      <activity android:name="MyActivity"
                android:theme="@style/default_activity_theme"/>
      

      【讨论】:

      • 我对上面的解决方案投了反对票。这是一个三年前的问题(和答案),所以我怀疑要么是 Android 发生了变化,所以这不再有效,或者有人只是决定继续投票。
      猜你喜欢
      • 2021-12-16
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      • 2018-01-04
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多