অ্যান্ড্রয়েডে গোলাকার কোণগুলি দিয়ে কীভাবে কাস্টম ডায়ালগ করা যায়


133

আমি যা করার চেষ্টা করছি: আমি বৃত্তাকার কোণগুলি সহ অ্যান্ড্রয়েডে একটি কাস্টম ডায়ালগ তৈরি করার চেষ্টা করছি।

যা ঘটছে: আমি কাস্টম সংলাপ করতে সক্ষম হয়েছি তবে এটিতে গোলাকার কোণ নেই। আমি একটি নির্বাচক যুক্ত করার চেষ্টা করেছি কিন্তু তবুও আমি বৃত্তাকার কোণগুলি অর্জন করতে পারি না।

নীচে তার জন্য আমার কোডটি রয়েছে:


জাভা কোড:

private void launchDismissDlg() {

        dialog = new Dialog(getActivity(), android.R.style.Theme_Dialog);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.dlg_dismiss);
        dialog.setCanceledOnTouchOutside(true);

        Button btnReopenId = (Button) dialog.findViewById(R.id.btnReopenId);
        Button btnCancelId = (Button) dialog.findViewById(R.id.btnCancelId);

        btnReopenId.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {



            }
        });


        btnCancelId.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {



            }
        });
        dialog.setCanceledOnTouchOutside(false);
        dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);
        dialog.show();

    }

এক্সএমএল কোড:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical" >

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="&quot;I WOULD LIKE TO DISMISS THE VENDOR&quot;"
                android:textColor="@color/col_dlg_blue_light"
                android:textSize="14sp"
                android:textStyle="bold" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:gravity="center" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="BECAUSE"
                android:textColor="@android:color/black"
                android:textStyle="bold" />
        </TableRow>



        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btnReopenId"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/col_dlg_green_light"
                android:text="REOPEN"
                android:padding="5dp"
                android:textSize="14sp"
                android:textColor="@android:color/white"
                android:textStyle="bold" />

            <Button
                android:id="@+id/btnCancelId"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@color/col_dlg_pink_light"
                android:text="CANCEL"
                android:padding="5dp"
                android:textSize="14sp"
                android:textColor="@android:color/white"
                android:textStyle="bold" />
        </TableRow>
    </TableLayout>

</LinearLayout>

আপনি কি ভাসমান মেনু সম্পর্কে কথা বলছেন?
অপূর্ব

@ অপূর্ব ... আমি ভাসমান মেনু ব্যবহার করি নি ... তবে আমি একটি সতর্কতা কথোপকথনের (কাস্টম) কথা বলছি
দেবরথ

আমি ভাসমান মেনু সম্পর্কে জিজ্ঞাসা করছিলাম কারণ আমি কেবল গোল গোল কোণে পপ আপ দেখেছি। বৃত্তাকার কোণগুলির সাথে কখনও সংলাপ দেখেনি।
অপূর্ব

উত্তর:


349

অঙ্কনযোগ্যতে একটি এক্সএমএল তৈরি করুন, ডায়লগ_বিজি.এক্সএমএল বলুন

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/white"/>
    <corners
        android:radius="30dp" />
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp" />
</shape>

এটি আপনার লেআউট এক্সএমএলে ব্যাকগ্রাউন্ড হিসাবে সেট করুন

android:background="@drawable/dialog_bg"

ডায়ালগের মূল দৃশ্যের ব্যাকগ্রাউন্ডটি স্বচ্ছ হিসাবে সেট করুন, কারণ অ্যান্ড্রয়েড আপনার ডায়ালগ বিন্যাসটিকে একটি রুট ভিউয়ের মধ্যে রাখে যা আপনার কাস্টম বিন্যাসের কোণগুলিকে লুকিয়ে রাখে।

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

1
এই পদ্ধতির সাথে সমস্যাটি হ'ল বোতামটির পটভূমিটিও স্বচ্ছ হবে।
হেনরিক ডি সোসা

46
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));অন্যান্য এসও থ্রেডের বেশিরভাগের কী অবস্থা! +1
রেন্ডিকা বিষ্মান

ব্যাকগ্রাউন্ড ট্রান্সপারেন্ট প্রদর্শিত হচ্ছে না দয়া করে আমাকে
স্যারকে

3
setBackgroundDrawableঅবহেলিত বলে মনে হচ্ছে ... এর কোনও বিকল্প আছে?
ডার্কসিগনাস

3
এর dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));আগে যুক্ত করুনsetContentView
রবি ভানিয়া

23

আপনাকে নিম্নলিখিতগুলি করতে হবে:

  • ডায়ালগের পটভূমির জন্য গোলাকার কোণগুলির সাথে একটি পটভূমি তৈরি করুন:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    
        <solid android:color="#fff" />
    
        <corners
            android:bottomLeftRadius="8dp"
            android:bottomRightRadius="8dp"
            android:topLeftRadius="8dp"
            android:topRightRadius="8dp" />
    
    </shape>
  • এখন আপনার ডায়লগের এক্সএমএল ফাইলটিতে মূল বিন্যাসে প্রয়োজনীয় মার্জিন সহ সেই ব্যাকগ্রাউন্ডটি ব্যবহার করুন:

    android:layout_marginLeft="20dip"
    android:layout_marginRight="20dip"
    android:background="@drawable/dialog_background"
  • শেষ পর্যন্ত জাভা অংশে আপনার এটি করা দরকার:

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(layoutResId);
    View v = getWindow().getDecorView();
    v.setBackgroundResource(android.R.color.transparent);

এটি আমার পক্ষে নিখুঁতভাবে কাজ করে।


1
আপনি যদি সব কোণে একই মান ব্যবহার করতে চান তবে আপনার ব্যবহার করা উচিত <corners android:radius="8dp"/>, অন্যথায় আপনি রেন্ডারিংয়ের সমস্যাগুলি পেয়ে যাবেন
মেহরান

1
@ মেহরান ভাল পয়েন্ট যে ইশারা জন্য ধন্যবাদ। আপনি কি এই তথ্যের উত্সটি ভাগ করতে পারেন?
এসএমআর

@ এসএমআর Path.isConvex is not supportedএটি হ'ল সতর্কতা যা আপনি সাধারণত আপনার বিন্যাসে পাবেন যদি আপনি সমস্ত কোণার জন্য একই মান সহ কোনও আকার ব্যবহার করেন। stackoverflow.com/q/34736981/6605907
মেহরান


13

dimen.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <integer name="weight">1</integer>

    <dimen name="dialog_top_radius">21dp</dimen>

    <dimen name="textview_dialog_head_min_height">50dp</dimen>
    <dimen name="textview_dialog_drawable_padding">5dp</dimen>

    <dimen name="button_dialog_layout_margin">3dp</dimen>


</resources>

styles.xml

<style name="TextView.Dialog">
        <item name="android:paddingLeft">@dimen/dimen_size</item>
        <item name="android:paddingRight">@dimen/dimen_size</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:textColor">@color/black</item>
    </style>

    <style name="TextView.Dialog.Head">
        <item name="android:minHeight">@dimen/textview_dialog_head_min_height</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:background">@drawable/dialog_title_style</item>
        <item name="android:drawablePadding">@dimen/textview_dialog_drawable_padding</item>
    </style>

    <style name="TextView.Dialog.Text">
        <item name="android:textAppearance">@style/Font.Medium.16</item>
    </style>

    <style name="Button" parent="Base.Widget.AppCompat.Button">
        <item name="android:layout_height">@dimen/button_min_height</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:gravity">center</item>
        <item name="android:textAppearance">@style/Font.Medium.20</item>
    </style>

 <style name="Button.Dialog">
        <item name="android:layout_weight">@integer/weight</item>
        <item name="android:layout_margin">@dimen/button_dialog_layout_margin</item>
    </style>

    <style name="Button.Dialog.Middle">
        <item name="android:background">@drawable/button_primary_selector</item>
    </style>

dialog_title_style.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <gradient
        android:angle="270"
        android:endColor="@color/primaryDark"
        android:startColor="@color/primaryDark" />

    <corners
        android:topLeftRadius="@dimen/dialog_top_radius"
        android:topRightRadius="@dimen/dialog_top_radius" />

</shape>

dialog_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/backgroundDialog" />
    <corners
        android:topLeftRadius="@dimen/dialog_top_radius"
        android:topRightRadius="@dimen/dialog_top_radius" />
    <padding />
</shape>

dialog_one_button.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/dailog_background"
    android:orientation="vertical">

    <TextView
        android:id="@+id/dialogOneButtonTitle"
        style="@style/TextView.Dialog.Head"
        android:text="Process Completed" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/dialogOneButtonText"
            style="@style/TextView.Dialog.Text"
            android:text="Return the main menu" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/dialogOneButtonOkButton"
                style="@style/Button.Dialog.Middle"
                android:text="Ok" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

OneButtonDialog.java

package com.example.sametoztoprak.concept.dialogs;

import android.app.Dialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;

import com.example.sametoztoprak.concept.R;
import com.example.sametoztoprak.concept.models.DialogFields;

/**
 * Created by sametoztoprak on 26/09/2017.
 */

public class OneButtonDialog extends Dialog implements View.OnClickListener {

    private static OneButtonDialog oneButtonDialog;
    private static DialogFields dialogFields;

    private Button dialogOneButtonOkButton;
    private TextView dialogOneButtonText;
    private TextView dialogOneButtonTitle;

    public OneButtonDialog(AppCompatActivity activity) {
        super(activity);
    }

    public static OneButtonDialog getInstance(AppCompatActivity activity, DialogFields dialogFields) {
        OneButtonDialog.dialogFields = dialogFields;
        return oneButtonDialog = (oneButtonDialog == null) ? new OneButtonDialog(activity) : oneButtonDialog;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_one_button);
        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

        dialogOneButtonTitle = (TextView) findViewById(R.id.dialogOneButtonTitle);
        dialogOneButtonText = (TextView) findViewById(R.id.dialogOneButtonText);
        dialogOneButtonOkButton = (Button) findViewById(R.id.dialogOneButtonOkButton);

        dialogOneButtonOkButton.setOnClickListener(this);
    }

    @Override
    protected void onStart() {
        super.onStart();
        dialogOneButtonTitle.setText(dialogFields.getTitle());
        dialogOneButtonText.setText(dialogFields.getText());
        dialogOneButtonOkButton.setText(dialogFields.getOneButton());
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.dialogOneButtonOkButton:

                break;
            default:
                break;
        }
        dismiss();
    }
}

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


10

আমি ব্যাকগ্রাউন্ড আঁকার যোগ্য না করে একটি নতুন উপায়ে তৈরি করেছি এটি হ'ল এটি পিতা-মাতা হিসাবে কার্ডভিউ তৈরি করে এবং এটি একটি দিয়ে app:cardCornerRadius="20dp"এবং তারপরে এটি জাভা ক্লাসে যুক্ত করুনdialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

এটি এটি তৈরির অন্য উপায়।


9

আপনি যদি উপাদান উপাদান ব্যবহার করেন :

CustomDialog.kt

class CustomDialog: DialogFragment() {

    override fun getTheme() = R.style.RoundedCornersDialog

}

styles.xml

<style name="RoundedCornersDialog" parent="Theme.MaterialComponents.Dialog">
    <item name="dialogCornerRadius">dimen</item>
</style>

এটি আমার জন্য সমাধান ছিল, ধন্যবাদ! আমার ক্ষেত্রে, আমি পাঠ্য এবং পটভূমির রঙ যুক্ত করেছি: <শৈলীর নাম = "রাউন্ডডকর্নার্স ডায়ালগ" প্যারেন্ট = "থিম.মেটারিয়াল কম্পোনেন্টস D ডায়ালগ"> <আইটেমের নাম = "কথোপকথনকেন্দ্রা" "15 ডিপি </ i>> <আইটেমের নাম =" অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড " > @ রঙ / সাদা </ i> <আইটেমের নাম = "অ্যান্ড্রয়েড: টেক্সট কালার"> @ রঙ / কালো </item> </style>
ফাল্দিভিয়া

6

আপনি ব্যাকগ্রাউন্ডের জন্য আকারটি ব্যবহার করতে পারেন-

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<corners android:radius="10dp" />
<padding android:left="10dp" android:right="10dp"/>
</shape>

একটি চেহারা আছে এই বিস্তারিত জানার জন্য।


6

সহজ উপায় থেকে ব্যবহার করা হয়

কার্ডভিউ এবং এটির কার্ড: কার্ডকর্নারিডিয়াস

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView 
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:card="http://schemas.android.com/apk/res-auto"
 android:orientation="vertical"
 android:id="@+id/cardlist_item"
 android:layout_width="match_parent"
 android:layout_height="130dp"
 card:cardCornerRadius="40dp"
 android:layout_marginLeft="8dp"
 android:layout_marginRight="8dp"
 android:layout_marginTop="5dp"
 android:layout_marginBottom="5dp"
 android:background="@color/white">

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="12sp"
    android:orientation="vertical"
    android:weightSum="1">
    </RelativeLayout>

</android.support.v7.widget.CardView>

এবং আপনি যখন আপনার ডায়ালগ তৈরি করছেন

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

এই সমাধানটি কার্ডভিউ উন্নয়নের ছায়াকে পুরোপুরি প্রদর্শিত হতে দেয় না
লাসজলো

5

বিন্যাস

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

একটি ছায়া নিক্ষেপ করার জন্য ডায়লগটিকে আটকাবে।

সমাধান ব্যবহার করা হয়

dialog.getWindow().setBackgroundDrawableResource(R.drawable.dialog_rounded_background);

আর.ড্রেবএবল.ডায়ালগ_আমি_ব্যাকগ্রাউন্ড যেখানে

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" android:padding="10dp">
            <solid
                android:color="@color/dialog_bg_color"/>
            <corners
                android:radius="30dp" />
        </shape>
    </item>

</layer-list>

1
সর্বাধিক মার্জিত এবং সাধারণ সমাধান যা এপিআই 27, অ্যান্ড্রয়েড 8.1 ওরিওতে কাজ করেছিল।
ম্যানুয়েলটিস

আপনি যদি এখনও থিম.অ্যাপকম্প্যাট
barnacle.m এর

4

এক্সএমএল-এ কাজ করতে পছন্দ করা যে কোনও ব্যক্তির জন্য, বিশেষত আপনি যেখানে ডায়ালগগুলিতে নেভিগেট করার জন্য নেভিগেশন আর্কিটেকচার উপাদানগুলির ক্রিয়া ব্যবহার করছেন in

তুমি ব্যবহার করতে পার:

<style name="DialogStyle" parent="ThemeOverlay.MaterialComponents.Dialog.Alert">

    <!-- dialog_background is drawable shape with corner radius -->
    <item name="android:background">@drawable/dialog_background</item>

    <item name="android:windowBackground">@android:color/transparent</item>
</style>

এটি দুর্দান্ত শর্ট! (y)
হ্যাশ

4

বৃত্তাকার কোণার সাথে কাস্টম ডায়ালগ তৈরি করতে আপনি কেবল ম্যাটারিয়ালআরলেটডায়ালগবিল্ডার ব্যবহার করতে পারেন।

প্রথমে উপাদান ডায়লগের জন্য একটি স্টাইল তৈরি করুন:

<style name="MyRounded.MaterialComponents.MaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
    <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.App.CustomDialog.Rounded
    </item>
    <item name="colorSurface">@color/YOUR_COLOR</item>
</style>

<style name="ShapeAppearanceOverlay.App.CustomDialog.Rounded" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">10dp</item>
</style>

তারপরে জাভা ক্লাসে একটি সতর্কতা ডায়ালগ অবজেক্ট তৈরি করুন:

AlertDialog alertDialog =  new MaterialAlertDialogBuilder(this,R.style.MyRounded_MaterialComponents_MaterialAlertDialog)  // for fragment you can use getActivity() instead of this 
                    .setView(R.layout.custom_layout) // custom layout is here 
                    .show();

            final EditText editText = alertDialog.findViewById(R.id.custom_layout_text);   // access to text view of custom layout         
            Button btn = alertDialog.findViewById(R.id.custom_layout_btn);

            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Log.d(TAG, "onClick: " + editText.getText().toString());
                }
            });

এটাই আপনার করা দরকার।


সবচেয়ে সঠিক উপায়, AlertDialog.Builder পরিবর্তে MaterialAlertDialogBuilder ব্যবহার করতে ভুলবেন না
Zakhar Rodionov

এটি দুর্দান্ত ট্যাঙ্কগুলি
গিলিয়ান মার্কস

অন্যান্য সমস্ত উত্তর পুরানো এবং উদ্বেগযুক্ত, তবু এটি এটি সবচেয়ে সহজ এবং নির্ভুল! ধন্যবাদ
হামজা খান

4

অ্যান্ড্রয়েডএক্স গ্রন্থাগার এবং উপাদান উপাদান থিমের সাহায্যে আপনি getTheme()পদ্ধতিটি ওভাররাইড করতে পারেন :

import androidx.fragment.app.DialogFragment

class RoundedDialog: DialogFragment() {

    override fun getTheme() = R.style.RoundedCornersDialog

    //....

}

সঙ্গে:

<style name="RoundedCornersDialog" parent="@style/ThemeOverlay.MaterialComponents.Dialog">
    <item name="dialogCornerRadius">16dp</item>
</style>

অথবা আপনি MaterialAlertDialogBuilderউপাদান উপাদান লাইব্রেরিতে অন্তর্ভুক্ত ব্যবহার করতে পারেন :

import androidx.fragment.app.DialogFragment
import com.google.android.material.dialog.MaterialAlertDialogBuilder

class RoundedAlertDialog : DialogFragment() {

    //...

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return MaterialAlertDialogBuilder(requireActivity(), R.style.MaterialAlertDialog_rounded)
                .setTitle("Test")
                .setMessage("Message")
                .setPositiveButton("OK", null)
                .create()
    }

}

সঙ্গে:

<style name="MaterialAlertDialog_rounded" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
    <item name="shapeAppearanceOverlay">@style/DialogCorners</item>
</style>

<style name="DialogCorners">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">16dp</item>
</style>

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

আপনার যদি প্রয়োজন হয় না তবে DialogFragmentএটি ব্যবহার করুন MaterialAlertDialogBuilder


3

আপনি যদি ডায়লগের কোণার ব্যাসার্ধটিকে নিয়ন্ত্রণ করতে এবং উন্নতির ছায়া সংরক্ষণ করতে চান তবে এখানে সম্পূর্ণ সমাধান রয়েছে

ডায়ালগ:

class OptionsDialog: DialogFragment() {

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedInstanceState: Bundle?): View {
    dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
    return inflater.inflate(R.layout.dialog_options, container)
}

}

কথোপকথন_এক্সএমএল লেআউট:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<androidx.cardview.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="40dp"
    app:cardElevation="20dp"
    app:cardCornerRadius="12dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        id="@+id/actual_content_goes_here"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.cardview.widget.CardView>
</FrameLayout>

কীটি হ'ল কার্ডভিউকে অন্য ভিউগ্রুপ (এখানে ফ্রেমলাইআউট) দিয়ে মোড়ানো এবং উচ্চতা ছায়ার জন্য স্থান তৈরি করার জন্য মার্জিন সেট করা।


3

কোটলিনে , আমি একটি ক্লাস ডাবল বাটনডায়ালগ.জভা ব্যবহার করছি window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))গুরুত্বপূর্ণ হিসাবে লাইন line

class DoubleButtonDialog(context: Context) : Dialog(context, R.style.DialogTheme) {

    private var cancelableDialog: Boolean = true
    private var titleDialog: String? = null
    private var messageDialog: String? = null
    private var leftButtonDialog: String = "Yes"
    //    private var rightButtonDialog: String? = null
    private var onClickListenerDialog: OnClickListener? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
        //requestWindowFeature(android.view.Window.FEATURE_NO_TITLE)
        setCancelable(cancelableDialog)
        setContentView(R.layout.dialog_double_button)
//        val btnNegative = findViewById<Button>(R.id.btnNegative)
//        btnNegative.visibility = View.GONE
//        if (rightButtonDialog != null) {
//            btnNegative.visibility = View.VISIBLE
//            btnNegative.text = rightButtonDialog
//            btnNegative.setOnClickListener {
//                dismiss()
//                onClickListenerDialog?.onClickCancel()
//            }
//        }
        val btnPositive = findViewById<Button>(R.id.btnPositive)
        btnPositive.text = leftButtonDialog
        btnPositive.setOnClickListener {
            onClickListenerDialog?.onClick()
            dismiss()
        }
        (findViewById<TextView>(R.id.title)).text = titleDialog
        (findViewById<TextView>(R.id.message)).text = messageDialog
        super.onCreate(savedInstanceState)
    }

    constructor(
        context: Context, cancelableDialog: Boolean, titleDialog: String?,
        messageDialog: String, leftButtonDialog: String, /*rightButtonDialog: String?,*/
        onClickListenerDialog: OnClickListener
    ) : this(context) {
        this.cancelableDialog = cancelableDialog
        this.titleDialog = titleDialog
        this.messageDialog = messageDialog
        this.leftButtonDialog = leftButtonDialog
//        this.rightButtonDialog = rightButtonDialog
        this.onClickListenerDialog = onClickListenerDialog
    }
}


interface OnClickListener {
    //    fun onClickCancel()
    fun onClick()
}

বিন্যাসে, আমরা একটি ডায়ালগ_ডুবল_বটন.এক্সএমএল তৈরি করতে পারি

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="@dimen/dimen_10"
        android:background="@drawable/bg_double_button"
        android:orientation="vertical"
        android:padding="@dimen/dimen_5">

        <TextView
            android:id="@+id/title"
            style="@style/TextViewStyle"
            android:layout_gravity="center_horizontal"
            android:layout_margin="@dimen/dimen_10"
            android:fontFamily="@font/campton_semi_bold"
            android:textColor="@color/red_dark4"
            android:textSize="@dimen/text_size_24"
            tools:text="@string/dial" />

        <TextView
            android:id="@+id/message"
            style="@style/TextViewStyle"
            android:layout_gravity="center_horizontal"
            android:layout_margin="@dimen/dimen_10"
            android:gravity="center"
            android:textColor="@color/semi_gray_2"
            tools:text="@string/diling_police_number" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/dimen_10"
            android:gravity="center"
        android:orientation="horizontal"
        android:padding="@dimen/dimen_5">

        <!--<Button
            android:id="@+id/btnNegative"
            style="@style/ButtonStyle"
            android:layout_width="0dp"
            android:layout_height="@dimen/dimen_40"
            android:layout_marginEnd="@dimen/dimen_10"
            android:layout_weight=".4"
            android:text="@string/cancel" />-->

        <Button
            android:id="@+id/btnPositive"
            style="@style/ButtonStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:backgroundTint="@color/red_dark4"
            android:fontFamily="@font/campton_semi_bold"
            android:padding="@dimen/dimen_10"
            android:text="@string/proceed"
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="@dimen/text_size_20" />
    </LinearLayout>
</LinearLayout>

তারপর ব্যবহার drawable.xml যেমন

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="@color/white"/>
    <corners
        android:radius="@dimen/dimen_10" />
    <padding
        android:left="@dimen/dimen_10"
        android:top="@dimen/dimen_10"
        android:right="@dimen/dimen_10"
        android:bottom="@dimen/dimen_10" />
</shape>

3

এপিআই স্তরের জন্য = = 28 উপলব্ধ বৈশিষ্ট্য android:dialogCornerRadius। পূর্ববর্তী এপিআই সংস্করণ সমর্থন করতে প্রয়োজন

<style name="RoundedDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:windowBackground">@drawable/dialog_bg</item>
    </style>

যেখানে কথোপকথন_বিজি.এমএমএল

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape >
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
    <item
        android:left="16dp"
        android:right="16dp">
        <shape>
            <solid
                android:color="@color/white"/>
            <corners
                android:radius="8dp" />

            <padding
                android:left="16dp"
                android:right="16dp" />
        </shape>
    </item>
</layer-list>

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