উপাদান নকশা সতর্কতা ডায়ালগ স্টাইল না


161

আমি আমার অ্যাপ্লিকেশনটিতে অ্যাপকম্প্যাট উপাদানটির নকশা যুক্ত করেছি এবং দেখে মনে হচ্ছে সতর্কতা ডায়লগগুলি আমার প্রাথমিক, প্রাথমিক ডার্ক বা অ্যাকসেন্ট রঙগুলি ব্যবহার করছে না।

এখানে আমার বেস শৈলী:

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="android:textColorPrimary">@color/action_bar_gray</item>
</style>

আমার বোঝার উপর ভিত্তি করে ডায়লগগুলির বোতামের পাঠ্যের মধ্যেও এই রঙগুলি ব্যবহার করা উচিত। আমি কি আমার বুঝতে ভুল করছি বা আমার আরও কিছু করার দরকার আছে?


সমাধান:

চিহ্নিত উত্তরটি আমাকে সঠিক পথে পেয়েছে।

<style name="MaterialNavyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
    <item name="android:actionModeBackground">@color/apptheme_color_dark</item>
    <item name="android:textColorPrimary">@color/action_bar_gray</item>
    <item name="sdlDialogStyle">@style/DialogStyleLight</item>
    <item name="android:seekBarStyle">@style/SeekBarNavyTheme</item>
</style>

<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/apptheme_color</item>
    <item name="colorPrimaryDark">@color/apptheme_color_dark</item>
    <item name="colorAccent">@color/apptheme_color</item>
</style>

আমি তৈরি করেছি এই লাইব্রেরিটি আপনি চেষ্টা করে দেখতে পারেন: github.com/AndroidDeveloperLB/MaterialStuffLibrary
অ্যান্ড্রয়েড বিকাশকারী

15
নীচের অংশটি কি সমাধান হওয়ার কথা? যদি তা হয় তবে এটি একটি স্ব-উত্তর হিসাবে পোস্ট করুন, প্রশ্নের উত্তরটি সম্পাদনা করবেন না।
আদি ইনবার

উত্তর:


463

অ্যান্ড্রয়েড লাইব্রেরির জন্য উপাদান উপাদানগুলির সাথে আগস্ট 2019 এ আপডেট হয়েছে:

অ্যান্ড্রয়েড লাইব্রেরির জন্য নতুন উপাদান উপাদানগুলির সাহায্যে আপনি নতুন com.google.android.material.dialog.MaterialAlertDialogBuilderশ্রেণিটি ব্যবহার করতে পারেন যা বিদ্যমান androidx.appcompat.AlertDialog.Builderবর্গ থেকে প্রসারিত এবং সর্বশেষ মেটালিয়াল ডিজাইনের বিশদগুলির জন্য সমর্থন সরবরাহ করে।

এই জাতীয় কিছু ব্যবহার করুন:

new MaterialAlertDialogBuilder(context)
            .setTitle("Dialog")
            .setMessage("Lorem ipsum dolor ....")
            .setPositiveButton("Ok", /* listener = */ null)
            .setNegativeButton("Cancel", /* listener = */ null)
            .show();

আপনি ThemeOverlay.MaterialComponents.MaterialAlertDialogস্টাইল প্রসারিত রঙগুলি কাস্টমাইজ করতে পারেন :

  <style name="CustomMaterialDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
     <!-- Background Color-->
     <item name="android:background">#006db3</item>
     <!-- Text Color for title and message -->
     <item name="colorOnSurface">@color/secondaryColor</item>
     <!-- Text Color for buttons -->
     <item name="colorPrimary">@color/white</item> 
     ....
  </style>  

আপনার কাস্টম শৈলী প্রয়োগ করতে কেবল নির্মাণকারীর ব্যবহার করুন:

new MaterialAlertDialogBuilder(context, R.style.CustomMaterialDialog)

এখানে চিত্র বর্ণনা লিখুন

বোতামগুলি কাস্টমাইজ করতে শিরোনাম এবং বডি টেক্সট আরও বিশদের জন্য এই পোস্টটি দেখুন।

আপনি আপনার অ্যাপ্লিকেশন থিমের বিশ্বব্যাপী স্টাইলটি পরিবর্তন করতে পারেন :

 <!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.MaterialComponents.Light">
    ...
    <item name="materialAlertDialogTheme">@style/CustomMaterialDialog</item>
 </style>

সমর্থন লাইব্রেরি এবং অ্যাপ্লিকেশন থিম সহ:

নতুনটির সাথে AppCompat v22.1আপনি নতুন android.support.v7.app.AlertDialog ব্যবহার করতে পারেন ।

এই জাতীয় কোড ব্যবহার করুন:

import android.support.v7.app.AlertDialog

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

এবং এর মতো একটি শৈলী ব্যবহার করুন:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="colorAccent">#FFCC00</item>
        <item name="android:textColorPrimary">#FFFFFF</item>
        <item name="android:background">#5fa3d0</item>
    </style>

অন্যথায় আপনি আপনার বর্তমান থিমটি সংজ্ঞায়িত করতে পারেন:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- your style -->
    <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>

এবং তারপরে আপনার কোডে:

 import android.support.v7.app.AlertDialog

    AlertDialog.Builder builder =
           new AlertDialog.Builder(this);

এখানে কিটকেটে সতর্কতা ডায়ালগ: এখানে চিত্র বর্ণনা লিখুন


2
অ্যালার্টডায়ালগ.বিল্ডারকে ডিফল্টটিকে আপডেট করার পরিবর্তে সঠিক থিমটি ব্যবহার করতে বাধ্য করা কেন? আমি জাভা কোডের পরিবর্তে স্টাইলস.এক্সএমএল এ সমস্যাটি সমাধান করতে পছন্দ করব।
টোম হুবেলেক

2
প্রি-ললিপপ ডিভাইসে শিরোনাম এবং বোতামের ফন্টগুলি সাহসী নয়।
jimmy0251

9
এটিকে কাজ করতে পেতে আমাকে "অ্যান্ড্রয়েড:" দিয়ে <item name="android:alertDialogTheme">@style/AppCompatAlertDialogStyle</item>

1
চমত্কার উত্তরের জন্য +1 তবে ললিপপের নীচে অ্যান্ড্রয়েড সংস্করণে আমি কীভাবে একই ইউআই অর্জন করতে পারি ... কারণ নীচের ডিভাইসটির সাথে ইউআই এত অদ্ভুত দেখাচ্ছে।
রিয়েলপ্রানভ

1
আমদানি android.support.v7.app.AlertDialog কাজ যোগ করুন
ফ্লিপনাভিড

9

ডায়ালগ নির্মাতা সূচনা করার সময়, থিম হিসাবে দ্বিতীয় প্যারামিটারটি পাস করুন। এটি স্বয়ংক্রিয়ভাবে এপিআই স্তর 21 সহ উপাদান নকশা প্রদর্শন করবে।

AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);

বা,

AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);

4

অ্যাপকম্প্যাটটি ডায়ালগগুলির জন্য এটি করে না (এখনও কমপক্ষে নয়)

সম্পাদনা: এটি এখন। ব্যবহার নিশ্চিত করুনandroid.support.v7.app.AlertDialog


দেখে মনে হচ্ছে আপনি অ্যাপকোম্প্যাট দিয়ে ডায়লগ স্টাইলগুলিতে কিছু পরিবর্তন করতে পারেন
ম্যাথু

আমার অ্যান্ড্রয়েড স্টুডিও ডিফল্টরূপে আমাকে import app.AlertDialogঅ্যাপকম্প্যাটটি দেয় নি । আমি আসলে এটি যাচাই করার আগে প্রায় 40 মিনিটের জন্য কী ভুল তা বোঝার চেষ্টা করেছি ... গুগল!
গ্লোরিফাইন্ড

2

আপনি এই প্রকল্পটি বিবেচনা করতে পারেন: https://github.com/fengdai/AlertDialogPro

এটি আপনাকে ললিপপের মতো সামগ্রিক থিম সতর্কতা ডায়ালগ সরবরাহ করতে পারে। অ্যান্ড্রয়েড 2.1 এর সাথে সামঞ্জস্যপূর্ণ।


কেবলমাত্র একটি নোট: এই উত্তরটি পুরান, তারপরে স্বীকৃত একটি।
rekire

2

আপনি ব্যবহার করতে পারেন

উপাদান ডিজাইন গ্রন্থাগার

মেটালিয়াল ডিজাইনের লাইব্রেরিটি বেশ সতর্কতা সংলাপ , বোতাম এবং স্নাক বারের মতো অন্যান্য জিনিসের জন্য তৈরি বর্তমানে এটি ব্যাপকভাবে বিকশিত হয়েছে।

গাইড, কোড, উদাহরণ - https://github.com/navasmdc/MaterialDesignLibrary

কীভাবে অ্যান্ড্রয়েড স্টুডিও 1.0 এ লাইব্রেরি যুক্ত করবেন তা গাইড করুন - আমি কীভাবে অ্যান্ড্রয়েড স্টুডিওতে মেটাল ডিজাইন লাইব্রেরি আমদানি করব?

শুভ কোডিং;)


1

এই লাইব্রেরি চেষ্টা করুন:

https://github.com/avast/android-styled-dialogs

এটি এর DialogFragmentsপরিবর্তে AlertDialogs(@ অফল্লাস্টাডের মতো) এর উপর ভিত্তি করে । প্রধান সুবিধা: ডায়ালগগুলি ঘোরার পরেও কলসব্যাকগুলি বাতিল করে না এবং কলব্যাকগুলি এখনও কাজ করে।


আমার গ্রন্থাগারটি অনেক বেশি সক্ষম। এবং আপনি সর্বদা ডায়ালগফ্রেগমেন্টের সাথে একটি ডায়ালগ মোড়ানো করতে পারেন। 😛
আফসোস্টল

1

কিছু কারণে অ্যান্ড্রয়েড: টেক্সটকালার কেবল শিরোনামের রঙ আপডেট করার জন্য মনে হচ্ছে। আপনি একটি ব্যবহার করে বার্তা পাঠ্যের রঙ পরিবর্তন করতে পারেন

SpannableString.AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.MyDialogTheme));

AlertDialog dialog = builder.create();
                Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
                wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                dialog.setMessage(wordtoSpan);
                dialog.show();

0

উপাদান ডিজাইন স্টাইলিং সতর্কতা ডায়ালগ: কাস্টম ফন্ট, বোতাম, রঙ এবং আকৃতি, ..

 MaterialAlertDialogBuilder(requireContext(),
                R.style.MyAlertDialogTheme
            )
                .setIcon(R.drawable.ic_dialogs_24px)
                .setTitle("Feedback")
                //.setView(R.layout.edit_text)
                .setMessage("Do you have any additional comments?")
                .setPositiveButton("Send") { dialog, _ ->

                    val input =
                        (dialog as AlertDialog).findViewById<TextView>(
                            android.R.id.text1
                        )
                    Toast.makeText(context, input!!.text, Toast.LENGTH_LONG).show()

                }
                .setNegativeButton("Cancel") { _, _ ->
                    Toast.makeText(requireContext(), "Clicked cancel", Toast.LENGTH_SHORT).show()
                }
                .show()

শৈলী:

  <style name="MyAlertDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
  
        <item name="android:textAppearanceSmall">@style/MyTextAppearance</item>
        <item name="android:textAppearanceMedium">@style/MyTextAppearance</item>
        <item name="android:textAppearanceLarge">@style/MyTextAppearance</item>

        <item name="buttonBarPositiveButtonStyle">@style/Alert.Button.Positive</item>
        <item name="buttonBarNegativeButtonStyle">@style/Alert.Button.Neutral</item>
        <item name="buttonBarNeutralButtonStyle">@style/Alert.Button.Neutral</item>

        <item name="android:backgroundDimEnabled">true</item>

        <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.MyApp.Dialog.Rounded
        </item>

    </style>




    <style name="MyTextAppearance" parent="TextAppearance.AppCompat">
        <item name="android:fontFamily">@font/rosarivo</item>
    </style>


        <style name="Alert.Button.Positive" parent="Widget.MaterialComponents.Button.TextButton">
   <!--     <item name="backgroundTint">@color/colorPrimaryDark</item>-->
        <item name="backgroundTint">@android:color/transparent</item>
        <item name="rippleColor">@color/colorAccent</item>
        <item name="android:textColor">@color/colorPrimary</item>
       <!-- <item name="android:textColor">@android:color/white</item>-->
        <item name="android:textSize">14sp</item>
        <item name="android:textAllCaps">false</item>
    </style>


    <style name="Alert.Button.Neutral" parent="Widget.MaterialComponents.Button.TextButton">
        <item name="backgroundTint">@android:color/transparent</item>
        <item name="rippleColor">@color/colorAccent</item>
        <item name="android:textColor">@color/colorPrimary</item>
        <!--<item name="android:textColor">@android:color/darker_gray</item>-->
        <item name="android:textSize">14sp</item>
        <item name="android:textAllCaps">false</item>
    </style>


  <style name="ShapeAppearanceOverlay.MyApp.Dialog.Rounded" parent="">
        <item name="cornerFamily">rounded</item>
        <item name="cornerSize">8dp</item>
    </style>

আউটপুট: এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.