AlertDialog 操作按钮放置
AlertDialog action button placement
我使用 AlertDialog.Builder
创建了一个 AlertDialog
并想调整操作按钮(取消和确定)的位置以改善其外观。
我已经搜索过了,但似乎找不到任何简单的方法。我是否必须放弃 AlertDialog.Builder
并将操作按钮功能添加到我的视图并设置所有侦听器?如果是这样,我如何确定操作按钮的文本 size/color 以与其他 AlertDialog
保持一致?
popup_tee_selection_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/popup_tee_selection_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enter_new_tee"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/popup_tee_selection_EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
<Switch
android:id="@+id/popup_tee_selection_Switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|start"
android:showText="true"
android:textOff="Men"
android:textOn="Women"
android:thumbTextPadding="10dp"
android:thumb="@drawable/custom_switch_inner_holo_light"
android:track="@drawable/custom_switch_track_holo_light"/>
</LinearLayout>
代码片段
private void popupTeeSelectionEditText() {
View popupView = LayoutInflater.from(getActivity()).inflate(R.layout.popup_tee_selection_edittext, null);
final EditText userInput = (EditText) popupView.findViewById(R.id.popup_tee_selection_EditText);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder
.setView(popupView)
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String selectedItem = userInput.getText().toString();
if (DEBUG) Log.w(TAG, "Returned value: '" + selectedItem + "'");
if (listViewAlertDialog != null)
listViewAlertDialog.cancel();
processTeeSelectionCourse(selectedItem);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.show();
}
AlertDialog
方法 getButton 可用于在创建对话框后获取操作按钮。然后您可以根据需要更改 textSize、textColor 等。我不认为你能改变它的位置。
要相对于您的其他内容视图精确定位按钮,您需要自己在 popupView
.
中添加它们
据我所知,提供给对话框构建器的视图仅用于对话框的中央部分,顶部没有标题部分,底部没有按钮部分。要获得您想要的外观,您需要将自定义按钮添加到此视图,设置适当的侦听器,然后隐藏原始按钮。
要设置匹配的颜色,请检查应用的主色和强调色。如果指定 none,您可以将它们设置为 android 默认值,或者可能在应用程序主题设置中指定它们,以便应用程序中的所有对话框都具有相同的外观。
看看这个 answer 以了解如何为对话框按钮设置自定义颜色。
您是否搜索过关于堆栈溢出的其他类似问题?
这里有一些可能可以帮助您的解决方案。链接如下。
对于第二个 link,一直向下滚动到底部,在那里他们简要讨论了如何创建您自己的自定义对话框。使用自定义对话框,您应该能够获得所需的格式。
Sound Conception提到的getButton()方法或许也是可行的方法
我使用 AlertDialog.Builder
创建了一个 AlertDialog
并想调整操作按钮(取消和确定)的位置以改善其外观。
我已经搜索过了,但似乎找不到任何简单的方法。我是否必须放弃 AlertDialog.Builder
并将操作按钮功能添加到我的视图并设置所有侦听器?如果是这样,我如何确定操作按钮的文本 size/color 以与其他 AlertDialog
保持一致?
popup_tee_selection_edittext.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/popup_tee_selection_TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/enter_new_tee"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/popup_tee_selection_EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
<Switch
android:id="@+id/popup_tee_selection_Switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|start"
android:showText="true"
android:textOff="Men"
android:textOn="Women"
android:thumbTextPadding="10dp"
android:thumb="@drawable/custom_switch_inner_holo_light"
android:track="@drawable/custom_switch_track_holo_light"/>
</LinearLayout>
代码片段
private void popupTeeSelectionEditText() {
View popupView = LayoutInflater.from(getActivity()).inflate(R.layout.popup_tee_selection_edittext, null);
final EditText userInput = (EditText) popupView.findViewById(R.id.popup_tee_selection_EditText);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder
.setView(popupView)
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String selectedItem = userInput.getText().toString();
if (DEBUG) Log.w(TAG, "Returned value: '" + selectedItem + "'");
if (listViewAlertDialog != null)
listViewAlertDialog.cancel();
processTeeSelectionCourse(selectedItem);
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.show();
}
AlertDialog
方法 getButton 可用于在创建对话框后获取操作按钮。然后您可以根据需要更改 textSize、textColor 等。我不认为你能改变它的位置。
要相对于您的其他内容视图精确定位按钮,您需要自己在 popupView
.
据我所知,提供给对话框构建器的视图仅用于对话框的中央部分,顶部没有标题部分,底部没有按钮部分。要获得您想要的外观,您需要将自定义按钮添加到此视图,设置适当的侦听器,然后隐藏原始按钮。
要设置匹配的颜色,请检查应用的主色和强调色。如果指定 none,您可以将它们设置为 android 默认值,或者可能在应用程序主题设置中指定它们,以便应用程序中的所有对话框都具有相同的外观。
看看这个 answer 以了解如何为对话框按钮设置自定义颜色。
您是否搜索过关于堆栈溢出的其他类似问题?
这里有一些可能可以帮助您的解决方案。链接如下。
对于第二个 link,一直向下滚动到底部,在那里他们简要讨论了如何创建您自己的自定义对话框。使用自定义对话框,您应该能够获得所需的格式。
Sound Conception提到的getButton()方法或许也是可行的方法