簡體   English   中英

AlertDialog僅在Android <7.0上顯示中性按鈕

[英]AlertDialog only showing neutral button on Android < 7.0

我制作了一個AlertDialog ,它具有三個按鈕(正,負,中性),當我在手機(Android 7.0)上對其進行測試時,它可以正常工作,但是我有幾個朋友(分別使用Android 5.0和6.0)對其進行了測試,而他們只有顯示中性按鈕。

這是代碼:

AlertDialog.Builder isSelfieBuilder = new AlertDialog.Builder(context);
isSelfieBuilder.setTitle("Choose picture orientation.");

// Set up the buttons
isSelfieBuilder.setPositiveButton("Selfie", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        //Do something
    }
});
isSelfieBuilder.setNeutralButton("Landscape", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        //Do something
    }
});
isSelfieBuilder.setNegativeButton("Portrait", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        //Do something
    }
});
final AlertDialog picTypeDialog = isSelfieBuilder.create();
picTypeDialog.show();

final Button positiveButton = picTypeDialog.getButton(AlertDialog.BUTTON_POSITIVE);
LinearLayout.LayoutParams positiveButtonLL = (LinearLayout.LayoutParams) positiveButton.getLayoutParams();
positiveButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
positiveButton.setLayoutParams(positiveButtonLL);

final Button neutralButton = picTypeDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
LinearLayout.LayoutParams neutralButtonLL = (LinearLayout.LayoutParams) neutralButton.getLayoutParams();
neutralButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
neutralButton.setLayoutParams(neutralButtonLL);

final Button negativeButton = picTypeDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
LinearLayout.LayoutParams negativeButtonLL = (LinearLayout.LayoutParams) negativeButton.getLayoutParams();
negativeButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
negativeButton.setLayoutParams(negativeButtonLL);

有人知道為什么我只能在其中找到中立按鈕嗎? 我嘗試刪除對齊部分( .show()之后的所有內容),但得到的結果相同。 我正在使用API​​ 21(5.0)在模擬器上進行測試,但遇到了同樣的問題。

final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Choose picture orientation.")
               .setPositiveButton("Selfie", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        //doSomething
                    }
                })
                .setNeutralButton("Landscape", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        //doSomething
                    }
                })
                .setNegativeButton("Portrait", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        //doSomething
                    }
                });
        AlertDialog dialog = builder.create();
        dialog.show();

因此,我“修復”此問題的方法是完全禁用:

AlertDialog picTypeDialog = isSelfieBuilder.create();
picTypeDialog.show();

並簡單地替換為

isSelfieBuilder.show();

即使按鈕之間的間距不夠理想,並且即使沒有AlertDialog我也無法編輯按鈕布局,它現在在所有設備上都能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM