【问题标题】:Alert dialog buttons problems in Android LAndroid L中的警报对话框按钮问题
【发布时间】:2014-12-29 19:09:45
【问题描述】:

我在我的应用程序中创建了一个 AlertDialog。在 Android L AlertDialog 按钮适合对话框之前,但在 Android L 按钮标签中自动转换为标题大小写和按钮不适合对话框。 请看截图:

Android L:

Android Kitkat:

有没有人看到这个问题。有谁能帮我解决这个问题,虽然这是最新的安卓版本。

代码:(我没有使用xml代码创建对话框,这里是java代码:)

AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setTitle(R.string.feedback_label);
        alert.setMessage(msgStrId);
        alert.setNegativeButton(R.string.close_label, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        });
        alert.setPositiveButton(R.string.rate_app, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            }
        });
        alert.setNeutralButton(R.string.feedback_label,new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) 
            {
                // TODO Auto-generated method stub
            }
        });
        alert.setOnCancelListener(new DialogInterface.OnCancelListener() 
        {
            @Override
            public void onCancel(DialogInterface dialog) 
            {
                // TODO Auto-generated method stub
            }
        });
        AlertDialog alertDialog = alert.create();
        alertDialog.show();

【问题讨论】:

  • 发布您的自定义警报对话框 xml..
  • @MSGadag 请查看代码。
  • 您有解决方案了吗?谢谢

标签: android android-5.0-lollipop android-alertdialog


【解决方案1】:

我知道,我来晚了。但我在这里分享我的建议。也许会有所帮助。

  AlertDialog alertDialog  = alert.create();
    alertDialog .show();
    alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setAllCaps(false);
    alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setAllCaps(false);
    alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setAllCaps(false);
 alertDialog.show();

【讨论】:

  • 一个很好的答案可以在提出问题多年后写出来。
  • 对不起先生,我听不懂,您能指导一下吗?
  • 我的意思是:答案不一定是“为时已晚”,因为问题已经过时了。
  • 这是一个可行的解决方案:stackoverflow.com/questions/27893840/…
【解决方案2】:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle);

styles.xml

<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:textAllCaps">false</item>
</style>

【讨论】:

    【解决方案3】:

    对@Kush 的回答稍作修改。您不必多次致电dialog.show()

    AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
            builder.setTitle("Title");
            builder.setMessage("message");
            builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //Do Something
                }
            });
            AlertDialog dialog = builder.create();
            dialog.show();
           dialog.getButton(AlertDialog.BUTTON_POSITIVE).setAllCaps(false);
    

    【讨论】:

      【解决方案4】:

      我认为它对你有用。 https://github.com/drakeet/MaterialDialog

      【讨论】:

        【解决方案5】:

        如果您尝试为此找到解决方案,那么您可能会遇到问题,但对于小屏幕,您将再次卡住,您还需要为它找到一些东西。

        所以最好分割你的字符串,这样它就可以解决你在任何屏幕上的问题。

        下面的代码。

        转到 strings.xml 文件。并更改您的标题如下。

         <string name="rate_app">Rate This \n App</string>
         <string name="feedback_label">Report \n Issues</string>
        

        如果 "\n" 不起作用,则使用用户
        标签。希望这会对你有所帮助。

        【讨论】:

          【解决方案6】:

          在您的应用程序主题定义中使用&lt;item name="android:textAllCaps"&gt;false&lt;/item&gt;。那么应用程序中的所有对话框都不再是大写了。

          【讨论】:

          • 问题不是对话框不是大写的,而是按钮不适合对话框。
          猜你喜欢
          • 1970-01-01
          • 2019-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-13
          • 1970-01-01
          相关资源
          最近更新 更多