我想创建一个带有如下按钮的AlertDialog:https://developer.android.com/images/ui/dialogs_regions.png
但是,每当我使用AlertDialog.Builder创建AlertDialog时,我最终会得到如下所示的按钮:https://developer.android.com/images/ui/dialog_buttons.png
如何更改AlertDialog以使按钮看起来像第一个示例(即占据对话框的整个底部,每个按钮之间有灰色分隔线)?请注意,我不是要尝试更改对话框窗口的颜色,只是按钮的显示方式。理想情况下,我只想使用默认的Android样式而不定义自定义样式 - 这可能吗?
这是我用来创建和显示AlertDialog的代码:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("Include answers in summary?");
alertDialogBuilder.setMessage("You have completed " + String.valueOf(questionsCompleted) + " out of 18 questions. Would you like the summary to include these answers along with the questions?");
alertDialogBuilder.setCancelable(false);
alertDialogBuilder.setPositiveButton("Include", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(getApplicationContext(), SummaryActivity.class);
intent.putExtra("componentNumber", 0);
intent.putExtra("includeAnswers", true);
startActivity(intent);
}
});
alertDialogBuilder.setNegativeButton("Omit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(getApplicationContext(), SummaryActivity.class);
intent.putExtra("componentNumber", 0);
intent.putExtra("includeAnswers", false);
startActivity(intent);
}
});
alertDialogBuilder.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
此AlertDialog中有三个操作。在没有太多细节的情况下,两个按钮将用户带到总结调查问卷的相同活动,但是包括或不包含他们的答案,而另一个按钮取消对话框。我知道我应该使用NegativeButton取消对话框,但即使Android开发人员对话框指南说正面和负面按钮之间会出现一个中性按钮,我也收到了中性的订单 - >负>正。结果,我在左侧看到了Omit选项,右侧有了Cancel和Include选项,这对我来说非常不直观。
我想将按钮的顺序更改为“否定” - >“中性” - >“正面”并将“否定”按钮定义为取消对话框,以便将导致摘要活动的两个按钮组合在一起 - 这有可能吗?
答案 0 :(得分:1)
我相信我的回答对您最有帮助。只需为您的对话框创建一个布局,就像下面的那个我认为正是您想要的布局。
Single
然后在代码中设置对话框的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="?android:dividerVertical"
android:showDividers="middle">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Are you sure?"
android:textStyle="bold"
android:textSize="20sp"
android:gravity="center"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:id="@+id/dialog_text"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
style="?android:buttonBarStyle"
android:divider="?android:dividerHorizontal"
android:showDividers="middle">
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/cancel_action"
android:layout_weight="1"
android:text="Cancel"
android:textAllCaps="false"
style="?android:buttonBarButtonStyle"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/ok_action"
android:layout_weight="1"
android:text="Ok"
android:textAllCaps="false"
style="?android:buttonBarButtonStyle"/>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:0)
AlertDialog按钮&#39;外观基于相应的Android API版本,所以你想要的(基于你的第一个截图)是Android 4.4.2(KitKat)中的AlertDialog,应用主题为Theme.AppCompat - 我知道这个因为&# 39;它在我的平板电脑4.4.2中的显示方式。例如:
答案 2 :(得分:0)
要在不同或指定主题中加载 AlertDialog,您可以尝试以下内容:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(new ContextThemeWrapper(this, android.R.style.Theme_Holo_Light_Dialog)));
可从API 1获得。
此外,关于按钮序列,您只需切换代码即可在按钮单击时获得所需结果,忽略按钮类型。 类似的东西:
builder.setNeutralButton("NO",listener);
builder.setNegativeButton("NOT SURE",listener);
builder.setPositiveButton("YES",listener);