gpt4 book ai didi

Android Alert Dialog 用另一种颜色替换默认的蓝色

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:42 24 4
gpt4 key购买 nike

我正在使用单选警报对话框,我想在其中将默认的蓝色(标题行和单选按钮)替换为我在标题栏中使用的橙色。我可以使用 setCustomTitle() 更改为标题栏,但我无法尝试摆脱这该死的蓝色。

对于标题栏

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/orange" >

<TextView
android:id="@+id/alertTitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="14dp"
android:gravity="center"
android:text="Alert Title"
android:textColor="@color/white"
android:textSize="18sp" />

</LinearLayout>

构建 AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
View customTitle = View.inflate(MainActivity.this, R.layout.custom_alert_title, null);
builder.setCustomTitle(customTitle);
builder.setSingleChoiceItems(mAlertOptions, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// do stuff
dialog.dismiss();
}
}).create().show();

这是它的样子

enter image description here

我需要摆脱这种蓝色!帮助!

最佳答案

更改标题分隔线颜色的唯一方法是结合使用 Resources.getIdentifierWindow.findViewById。通过调用 AlertDialog.Builder.setSingleChoiceItems(ListAdapter, int, OnClickListener) 可以轻松更改复选标记。

这是一个例子:

单选项布局:我使用 Android Holo Colors. 生成了 your_radio_button

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checkMark="@drawable/your_radio_button"
android:ellipsize="marquee"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingEnd="16dip"
android:paddingStart="16dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="?android:attr/textColorAlertDialogListItem" />

实现

    final ListAdapter adapter = new ArrayAdapter<String>(this,
R.layout.select_dialog_singlechoice, android.R.id.text1, new String[] {
"Option 1", "Option 2"
});

final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCustomTitle(getLayoutInflater().inflate(R.layout.custom_alert_title, null));
builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do something
}
});

// Show the AlertDialog
final AlertDialog dialog = builder.show();

// Change the title divider
final Resources res = getResources();
final int titleDividerId = res.getIdentifier("titleDivider", "id", "android");
final View titleDivider = dialog.findViewById(titleDividerId);
titleDivider.setBackgroundColor(res.getColor(android.R.color.holo_orange_dark));

结果

Example

关于Android Alert Dialog 用另一种颜色替换默认的蓝色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23255776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com