Android L中的警报对话框按钮问题

8
我在我的应用程序中创建了一个AlertDialog。在Android L之前,AlertDialog按钮适合对话框框,但是在Android L中,按钮标签自动转换为标题大小写形式,并且按钮不适合对话框框。 请查看截图:
Android L: Android L AlertDialog screenshot Android Kitkat: Android 4.4 AlertDialog screenshot 有人遇到这个问题吗?谁能帮我解决这个问题,虽然这是最新的Android版本。
代码:(我没有使用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。 - M S Gadag
@MSGadag 请查看代码。 - DevK
你有解决方案了吗?谢谢。 - user3539940
6个回答

8

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

  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();

一个伟大的答案可以在问题被提出多年后写出。 - Benjamin W.
对不起,先生,我无法理解,请您指导一下吗? - Kush
我的意思是:问题旧了并不意味着答案一定“太晚”。 - Benjamin W.
这是一个可行的解决方案:https://dev59.com/dIbca4cB1Zd3GeqPas8g#39143743 - TharakaNirmana

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

1
@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);

-1

-2

如果你试图找到解决方案,可能会找到,但对于小屏幕,你又会陷入困境,需要再次寻找解决方案。

因此,更好的方法是将字符串分割,这样可以解决任何屏幕的问题。

为此,请按照以下代码进行操作。

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

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

如果“\n”无法正常工作,那么请使用“
”标签。希望这能对您有所帮助。

-4

在应用程序主题的定义中使用<item name="android:textAllCaps">false</item>。然后应用程序中的所有对话框都不再是大写字母。


1
问题不在于对话框不是大写的,而是按钮无法适应对话框内。 - Devin Young

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接