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

时间:2014-11-03 06:33:45

标签: android android-5.0-lollipop

我在我的应用中创建了一个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();

6 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

    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>

答案 4 :(得分:-1)

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

所以更好的是划分你的字符串,以便它可以解决任何屏幕的问题。

对于以下代码。

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

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

如果&#34; \ n&#34;不工作然后用户
标签。希望这会对你有所帮助。

答案 5 :(得分:-3)

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