爲什麼我想這樣做完全是另一次討論,但我需要弄清楚讓所有警報對話框右邊都有肯定按鈕的最佳方法。請注意,在3.0及以下版本中,按鈕通常顯示爲確定/取消,在4.0及更高版本中,取消/確定。我想強制我的應用程序以最簡單的方式使用取消/確定。我在應用程序中有很多AlertDialogs。如何在AlertDialog中設置正負按鈕的順序?
回答
不幸的是,我不相信你可以。但是,引用documentation:
注意:您只能將每個按鈕類型之一添加到AlertDialog。也就是說,你不能有多個「正面」按鈕。這將可能的按鈕數量限制爲三個:正面,中性和負面。這些名稱在技術上與您的按鈕的實際功能無關,但應該可以幫助您跟蹤哪一個按鈕的功能。
所以你可以把不同的按鈕變成任何你想要的。你現在看到的是具有交換的順序(從this答案排序):
- 在之前的ICS設備,按鈕順序(從左到右)是積極的 - 中性 - 負。
- 在使用ICS的較新設備上,按鈕順序(從左到右)現在爲NEGATIVE - NURTRAL - POSITIVE。
你可以嘗試檢查Build.VERSION
並用它來決定哪個按鈕是在運行時。
這很有幫助,但似乎4.0和更高版本的許多手機仍然沒有按鈕順序顛倒。我可以告訴的是,如果構建版本> = 4.0,那麼按鈕訂單可能取消/確定 – 2012-07-26 13:59:30
在4.0.3基於按鈕文本的負面/正面變化的順序 – max4ever 2013-01-11 11:13:36
我看到一個「中性」 - 「負面」 - 警報對話框和支持警報對話框中的從左到右的「正」順序。他們是否改變了主意? – 2016-01-31 23:33:46
我已經創建了一個解決方案來強制任何設備上的任何Android版本的按鈕順序。
這個想法是,我們可以得到對話框的按鈕列表,以便它們出現在屏幕上,並按照我們的需要設置文本和動作。它保證我們在任何設備上都有相同的訂單。
請檢查創建和顯示對話框我GitHub repository
這裏是例子:
new FixedOrderDialogFragment.Builder()
.setLeftButtonText(R.string.left)
.setCenterButtonText(R.string.center)
.setRightButtonText(R.string.right)
.setDefaultButton(FixedOrderDialogFragment.BUTTON_RIGHT)
.setMessage(R.string.message)
.setTitle(R.string.app_name)
.create()
.show(getSupportFragmentManager(), "DEMO");
請注意,車主活動應該實現FixedOrderDialogFragment.FixedOrderDialogListener能夠在活動的再創造恢復對話狀態。
我想我可以將正面按鈕的文本設置爲取消,將負面設置爲確定,但事實證明它們按字母順序排列。
您可以擴展AlertDialog.Builder
強制命令:
public class MyDialog extends AlertDialog.Builder {
public MyDialog(Context arg0) {
super(arg0);
}
@Override
public Builder setPositiveButton(CharSequence text, OnClickListener listener) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return super.setNegativeButton(text, listener);
} else {
return super.setPositiveButton(text, listener);
}
}
@Override
public Builder setNegativeButton(CharSequence text, OnClickListener listener) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return super.setPositiveButton(text, listener);
} else {
return super.setNegativeButton(text, listener);
}
}
}
查看之前的評論:「似乎4.0以上的手機仍然沒有按鍵順序顛倒。我只能說如果構建版本> = 4.0,那麼按鈕順序可能會取消/確定」 – 2013-12-03 16:41:25
這是我的解決方案。這對我來說很有用。
// Show alertDialog after building
AlertDialog alertDialog = createAlertDialog(context);
alertDialog.show();
// and find positiveButton and negativeButton
Button positiveButton = (Button) alertDialog.findViewById(android.R.id.button1);
Button negativeButton = (Button) alertDialog.findViewById(android.R.id.button2);
// then get their parent ViewGroup
ViewGroup buttonPanelContainer = (ViewGroup) positiveButton.getParent();
int positiveButtonIndex = buttonPanelContainer.indexOfChild(positiveButton);
int negativeButtonIndex = buttonPanelContainer.indexOfChild(negativeButton);
if (positiveButtonIndex < negativeButtonIndex) {
// prepare exchange their index in ViewGroup
buttonPanelContainer.removeView(positiveButton);
buttonPanelContainer.removeView(negativeButton);
buttonPanelContainer.addView(negativeButton, positiveButtonIndex);
buttonPanelContainer.addView(positiveButton, negativeButtonIndex);
}
- 在AlertDialog buttonPanel,三個按鈕排序[中性] [負] [正]
那麼你可以設置按鈕,像下面的代碼
建設者。setNeutralButton( 「負」,聽者);
builder.setNegativeButton(「Neutral」,listener);
builder.setPositiveButton(「Positive」,listener);
- 1. 如何在DialogFragment中設置正/負按鈕?
- 2. 如何在alertdialog中將按鈕設置在右側
- 3. 在設置按鈕之前創建AlertDialog
- 4. 可以自定義AlertDialog中的正負按鈕嗎?
- 5. alertdialog正/負按鈕沒有在我的dialogfragment類全屏dialogfragment
- 6. 在AlertDialog中禁用正向按鈕
- 7. AlertDialog負面按鈕不處理
- 8. AlertDialog中的按鈕
- 9. AlertDialog正值按鈕爲空
- 10. 如何正確設置按鈕的setOnClickListener?
- 11. DialogFragment上的正負按鈕位置
- 12. 如何繼承AlertDialog按鈕
- 13. 如何在Android的AlertDialog中設置Edittext
- 14. 如何解開alertDialog中的按鈕?
- 15. Android - 如何在alertdialog中按下按鈕並按下按鈕是或否按鈕
- 16. 如何在alertdialog按鈕中添加按鈕點擊效果android
- 17. AlertDialog總是按下正向按鈕
- 18. 在警報對話框中的同一行中設置正負按鈕
- 19. VB.NET中的按鈕順序
- 20. 如何在運行時禁用AlertDialog的正向按鈕?
- 21. 如何在Android中設置onclick in alertdialog
- 22. 如何在操作欄中設置正確的切換按鈕?
- 23. 如何在extjs中正確設置按鈕的圖標大小?
- 24. alertdialog中按鈕的大小
- 25. AlertDialog單按鈕?
- 26. 如何在Android中設置按鈕?
- 27. 如何在DataTables按鈕中設置href?
- 28. 如何在c#中設置按鈕backgroundimage?
- 29. 是否可以在對話框中設置正面和負面的按鈕?
- 30. Android:如何在應用程序中設置按鈕的按鈕圖像
我建議你不要這樣做。如果用戶將他們的大部分應用都顯示爲「確定/取消」,但在一個應用中將其設爲「取消/確定」,會令人困惑。我認爲最好保持一致。 – kabuko 2012-07-12 20:26:57
請參閱上面的內容:「爲什麼我要這麼做是另一個完全討論的問題」 – 2012-07-13 03:16:45