كيفية تغيير عنوان حوار أبكومبات ولون مقسم العنوان?
-
21-12-2019 - |
سؤال
هل هناك أي طريقة لتغيير عنوان حوار أبكومبات ولون مقسم العنوان?لا أريد استخدام لون هولو الأزرق الفاتح.
لقد أسست هذا الرابط ولكن هو ضوء هولو ولا تعمل مع أبكومبات.
شكرا مقدما.
المحلول
الطريقة الوحيدة لتغيير 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");
}
النتائج