كيفية تغيير عنوان حوار أبكومبات ولون مقسم العنوان?

StackOverflow https://stackoverflow.com//questions/23023877

سؤال

هل هناك أي طريقة لتغيير عنوان حوار أبكومبات ولون مقسم العنوان?لا أريد استخدام لون هولو الأزرق الفاتح.

لقد أسست هذا الرابط ولكن هو ضوء هولو ولا تعمل مع أبكومبات.

شكرا مقدما.

هل كانت مفيدة؟

المحلول

الطريقة الوحيدة لتغيير 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");
}

النتائج

Example

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top