Есть ли способ изменить заголовок диалогового окна Appcompat и цвет разделителя заголовка? Я не хочу использовать голографический голубой цвет.
Я основал это ссылка, но для голографического освещения и не работает с appcompat.
Заранее спасибо.
Есть ли способ изменить заголовок диалогового окна Appcompat и цвет разделителя заголовка? Я не хочу использовать голографический голубой цвет.
Я основал это ссылка, но для голографического освещения и не работает с appcompat.
Заранее спасибо.
Единственный способ изменить цвет разделителя заголовков Dialog
— создать подкласс Dialog
и использовать Resources.getIdentifier
для поиска разделителя заголовков View
. После этого все, что вам нужно, это позвонить View.setBackgroundColor
. Поскольку это единственный способ настроить разделитель заголовков, вы также можете использовать тот же метод для настройки цвета заголовка.
Но что касается того, почему вы не можете получить ответ, который вы связали с работой на вас, трудно сказать. Вы не включаете какой-либо код или что-либо, что вы пробовали, поэтому сложно точно определить, почему вы не получаете желаемых результатов.
Вот пример изменения цвета заголовка и цвета разделителя заголовка:
/**
* A sublcass of {@link AlertDialog} used to customize the title and title
* divider colors
*/
public class CustomDialog extends AlertDialog {
/**
* Constructor for <code>CustomDialog</code>
*
* @param context The {@link Context} to use
*/
public CustomDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Resources res = getContext().getResources();
final int yellow = res.getColor(android.R.color.holo_orange_light);
// Title
final int titleId = res.getIdentifier("alertTitle", "id", "android");
final View title = findViewById(titleId);
if (title != null) {
((TextView) title).setTextColor(yellow);
}
// Title divider
final int titleDividerId = res.getIdentifier("titleDivider", "id", "android");
final View titleDivider = findViewById(titleDividerId);
if (titleDivider != null) {
titleDivider.setBackgroundColor(yellow);
}
}
}
Реализация
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final CustomDialog customDialog = new CustomDialog(this);
customDialog.setTitle("Title");
customDialog.setMessage("Message");
customDialog.show();
}
Использование DialogFragment
с AlertDialog.Builder
public class CustomDialogFragment extends DialogFragment {
/**
* Empty constructor as per the {@link Fragment} docs
*/
public CustomDialogFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTitle("Title")
.setMessage("Message")
.create();
}
@Override
public void onStart() {
super.onStart();
final Resources res = getResources();
final int yellow = res.getColor(android.R.color.holo_orange_light);
// Title
final int titleId = res.getIdentifier("alertTitle", "id", "android");
final View title = getDialog().findViewById(titleId);
if (title != null) {
((TextView) title).setTextColor(yellow);
}
// Title divider
final int titleDividerId = res.getIdentifier("titleDivider", "id", "android");
final View titleDivider = getDialog().findViewById(titleDividerId);
if (titleDivider != null) {
titleDivider.setBackgroundColor(yellow);
}
}
}
Реализация
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new CustomDialogFragment().show(getFragmentManager(), "customDialogFragment");
}
Результаты
DialogFragment
иAlertDialog.Builder
. 12.04.2014