更改 AlertDialog 下部灰色面板的样式
Change style for AlertDialog lower grey panel
什么样式导致 AlertDialog 底部出现灰色条?
要么我需要更改对话框的其余部分以匹配颜色,反之亦然。我试过修改@android:buttonStyle 和@android:buttonBarStyle。这有帮助,但仍然有一些灰色从该区域的边缘向外窥视。
这是我目前的风格:
<style name="MyAlertDialog" parent="@android:style/Theme.Dialog">
<item name="@android:background">#FF000000</item>
<item name="@android:buttonBarStyle">@style/MyButtonBar</item>
</style>
<style name="MyButtonBar" parent="@android:style/ButtonBar">
<item name="@android:background">#FF000000</item>
</style>
看起来像这样:
这是一个可行的解决方案,基于 Rod_Algonquin 使用自定义布局的想法。
private void showCustomAlert (String message)
{
// build dialog
LayoutInflater inflater = getLayoutInflater();
View alertView = inflater.inflate (R.layout.custom_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder (this, R.style.CustomAlertDialog);
builder.setView (alertView);
final AlertDialog alert = builder.create();
// message
((TextView)alertView.findViewById (R.id.message)).setText (message);
// ok button
alertView.findViewById (R.id.cancel).setOnClickListener (new View.OnClickListener()
{
@Override public void onClick(View v) { alert.dismiss(); }
});
// show
alert.show();
}
下面是适用于此代码的布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#FF000000">
<TextView android:id="@+id/alertTitle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:gravity="center"
android:background="@android:color/black"
android:textColor="@android:color/white"
android:textAppearance="@android:style/TextAppearance.Large"
android:text="@string/custom_alert_title" />
<TextView android:id="@+id/message"
style="@android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:background="@android:color/black"
android:textColor="@android:color/white"
android:textAppearance="@android:style/TextAppearance.Medium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@android:color/black"
android:measureWithLargestChild="true">
<Button android:id="@+id/cancel"
style="?android:attr/buttonBarButtonStyle"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:minHeight="50dp"
android:minWidth="100dp"
android:textSize="14sp"
android:text="@android:string/ok" />
</LinearLayout>
</LinearLayout>
最后,这是我参考的 styles.xml 中的样式;根据您的对话框着色,您可能不需要它们。
<style name="CustomAlertDialog" parent="@android:style/Theme.Dialog">
<item name="@android:background">#FF000000</item>
<item name="@android:buttonBarStyle">@style/CustomButtonBar</item>
</style>
<style name="CustomButtonBar" parent="@android:style/ButtonBar">
<item name="@android:background">#FF000000</item>
</style>
什么样式导致 AlertDialog 底部出现灰色条?
要么我需要更改对话框的其余部分以匹配颜色,反之亦然。我试过修改@android:buttonStyle 和@android:buttonBarStyle。这有帮助,但仍然有一些灰色从该区域的边缘向外窥视。
这是我目前的风格:
<style name="MyAlertDialog" parent="@android:style/Theme.Dialog">
<item name="@android:background">#FF000000</item>
<item name="@android:buttonBarStyle">@style/MyButtonBar</item>
</style>
<style name="MyButtonBar" parent="@android:style/ButtonBar">
<item name="@android:background">#FF000000</item>
</style>
看起来像这样:
这是一个可行的解决方案,基于 Rod_Algonquin 使用自定义布局的想法。
private void showCustomAlert (String message)
{
// build dialog
LayoutInflater inflater = getLayoutInflater();
View alertView = inflater.inflate (R.layout.custom_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder (this, R.style.CustomAlertDialog);
builder.setView (alertView);
final AlertDialog alert = builder.create();
// message
((TextView)alertView.findViewById (R.id.message)).setText (message);
// ok button
alertView.findViewById (R.id.cancel).setOnClickListener (new View.OnClickListener()
{
@Override public void onClick(View v) { alert.dismiss(); }
});
// show
alert.show();
}
下面是适用于此代码的布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#FF000000">
<TextView android:id="@+id/alertTitle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="50dp"
android:gravity="center"
android:background="@android:color/black"
android:textColor="@android:color/white"
android:textAppearance="@android:style/TextAppearance.Large"
android:text="@string/custom_alert_title" />
<TextView android:id="@+id/message"
style="@android:attr/textAppearanceMedium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:background="@android:color/black"
android:textColor="@android:color/white"
android:textAppearance="@android:style/TextAppearance.Medium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@android:color/black"
android:measureWithLargestChild="true">
<Button android:id="@+id/cancel"
style="?android:attr/buttonBarButtonStyle"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:minHeight="50dp"
android:minWidth="100dp"
android:textSize="14sp"
android:text="@android:string/ok" />
</LinearLayout>
</LinearLayout>
最后,这是我参考的 styles.xml 中的样式;根据您的对话框着色,您可能不需要它们。
<style name="CustomAlertDialog" parent="@android:style/Theme.Dialog">
<item name="@android:background">#FF000000</item>
<item name="@android:buttonBarStyle">@style/CustomButtonBar</item>
</style>
<style name="CustomButtonBar" parent="@android:style/ButtonBar">
<item name="@android:background">#FF000000</item>
</style>