android - অ্যাপকম্প্যাট 22.1 এবং উপরের থেকে কীভাবে নতুন অ্যালার্টডায়ালগ ব্যবহার এবং স্টাইল করা যায়




android-support-library alertdialog (4)

@ রিভার্স উত্তর অনুসরণ করুন তবে আমার ক্ষেত্রে আমার AppTheme মতো ইতিমধ্যে আমার কিছু সম্পত্তি ছিল

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="android:textColor">#111</item>
    <item name="android:textSize">13sp</item>
</style>

সুতরাং আমার ডায়ালগটি দেখতে ভাল লাগবে

আমি এটি দ্বারা সমাধান

1) android.app.AlertDialog থেকে android.app.AlertDialog এ আমদানি পরিবর্তন করুন
2) আমি AppTheme 2 টি সম্পত্তি নাল মান সহ ওভাররাইড করি

<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <!-- Used for the buttons -->
    <item name="colorAccent">#FFC107</item>
    <!-- Used for the title and text -->
    <item name="android:textColorPrimary">#FFFFFF</item>
    <!-- Used for the background -->
    <item name="android:background">#4CAF50</item>


    <item name="android:textColor">@null</item>
    <item name="android:textSize">@null</item>
</style>

AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.MyAlertDialogStyle);

আশা করি এটি অন্য লোকেদের সহায়তা করবে

আমি ডিফল্ট অ্যান্ড্রয়েড AlertDialog থেকে অ্যাপকোম্প্যাট -২২.১-তে অন্তর্ভুক্ত AlertDialog স্থানান্তরিত করার চেষ্টা করছি এখন পর্যন্ত আমি বুঝতে পেরেছি এটি ব্যবহারের জন্য আপনাকে কেবল android.support.v7.app.AlertDialog প্যাকেজটি আমদানি করতে হবে।

তবে আমি কীভাবে এটি স্টাইল করতে পারি? উদাহরণস্বরূপ ইতিবাচক / নেতিবাচক বোতামের রং, শিরোনামের রঙ, বার্তার রঙ এবং ব্যাকগ্রাউন্ডের রঙ পরিবর্তন করুন?


আপনি যদি নতুন android.support.v7.app.AlertDialog ব্যবহার করতে চান এবং বোতামগুলির জন্য বিভিন্ন রঙ এবং কাস্টম লেআউট পেতে চান তবে আমার https://gist.github.com/JoachimR/6bfbc175d5c8116d411e

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.custom_layout, null);

    initDialogUi(v);

    final AlertDialog d = new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle)
            .setTitle(getString(R.string.some_dialog_title))
            .setCancelable(true)
            .setPositiveButton(activity.getString(R.string.some_dialog_title_btn_positive),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            doSomething();
                            dismiss();
                        }
                    })
            .setNegativeButton(activity.getString(R.string.some_dialog_title_btn_negative),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dismiss();
                        }
                    })
            .setView(v)
            .create();

    // change color of positive button         
    d.setOnShowListener(new DialogInterface.OnShowListener() {
        @Override
        public void onShow(DialogInterface dialog) {
            Button b = d.getButton(DialogInterface.BUTTON_POSITIVE);
            b.setTextColor(getResources().getColor(R.color.colorPrimary));
        }
    });

    return d;
}


AlertDialog তৈরি করার AlertDialog আপনি ব্যবহার করতে একটি থিম সেট করতে পারেন।

উদাহরণ - সংলাপ তৈরি করা

AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle);
builder.setTitle("AppCompatDialog");
builder.setMessage("Lorem ipsum dolor...");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();

styles.xML - কাস্টম শৈলী

<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    <!-- Used for the buttons -->
    <item name="colorAccent">#FFC107</item>
    <!-- Used for the title and text -->
    <item name="android:textColorPrimary">#FFFFFF</item>
    <!-- Used for the background -->
    <item name="android:background">#4CAF50</item>
</style>

ফলাফল

সম্পাদন করা

শিরোনাম উপস্থিতি পরিবর্তন করতে, আপনি নিম্নলিখিত করতে পারেন। প্রথমে একটি নতুন স্টাইল যুক্ত করুন:

<style name="MyTitleTextStyle">
    <item name="android:textColor">#FFEB3B</item>
    <item name="android:textAppearance">@style/TextAppearance.AppCompat.Title</item>
</style>

এরপরে আপনার MyAlertDialogStyle স্টাইলে কেবল এই স্টাইলটি উল্লেখ করুন:

<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
    ...
    <item name="android:windowTitleStyle">@style/MyTitleTextStyle</item>
</style>

এইভাবে আপনি android:textColorPrimary মাধ্যমে বার্তাটির জন্য একটি পৃথক textColor সংজ্ঞায়িত করতে পারেন android:textColorPrimary এবং শৈলীর মাধ্যমে শিরোনামের জন্য আলাদা।


    <item name="editTextColor">@color/white</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textColorHint">@color/gray</item>
    <item name="android:textColorPrimary">@color/gray</item>
    <item name="colorControlNormal">@color/gray</item>
    <item name="colorControlActivated">@color/white</item>
    <item name="colorControlHighlight">#30FFFFFF</item>




android-appcompat