亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

向警報對話框添加圓角

向警報對話框添加圓角

www說 2023-05-10 17:35:11
我正在嘗試向 中添加圓角AlertDialog,但我不明白形狀文件的邏輯(不起作用)。我將它用作 的背景RelativeLayout,AlertDialog但它似乎被忽略了。這是形狀文件:<?xml version="1.0" encoding="utf-8"?><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>這是警報對話框 xml:<RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/dialog_rl"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="10dp"    tools:context=".UserList"    android:background="@drawable/shape_dialog">    <TextView        android:id="@+id/dialog_titile"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Scegli un'operazione"        android:textAlignment="center"        android:padding="5dp"        android:textColor="@android:color/black"        android:background="#D3D3D3"        android:textSize="26dp" />    <TextView        android:id="@+id/dialog_tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Vuoi aprire o eliminare il test?"        android:textAlignment="center"        android:padding="15dp"        android:textSize="26dp"        android:layout_marginLeft="80dp"        android:background="@android:color/white"        android:textColor="@android:color/black"        android:layout_below="@id/dialog_titile" />    <Button        android:id="@+id/dialog_neutral_btn"        android:layout_width="80dp"        android:layout_height="wrap_content"        android:text="Indietro"        android:layout_below="@id/dialog_tv"        android:textColor="@android:color/black"        android:background="@drawable/button_bg_3" />這就是結果 我錯過了什么?
查看完整描述

5 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

只需使用官方Material Components for Android 庫中包含的官方Material AlertDialog。

new?MaterialAlertDialogBuilder(context)
????????????.setTitle("Title")
????????????.setMessage("Message")
????????????.setPositiveButton("Ok",?null)
????????????.show();

并使用主題

<item?name="materialAlertDialogTheme">@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog</item>

它遵循以下準則:

http://img3.sycdn.imooc.com/645b65a40001621806530336.jpg

您可以使用屬性自定義組件的形狀shapeAppearanceOverlay。

就像是:

<!-- Alert Dialog -->

? <style name="MyThemeOverlayAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">

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

? </style>


? <style name="ShapeAppearanceOverlay.MyApp.Dialog.Rounded" parent="">

? ? <item name="cornerFamily">rounded</item>

? ? <item name="cornerSize">8dp</item>

? </style>


查看完整回答
反對 回復 2023-05-10
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

我已經檢查了你的形狀,它在我的手機上看起來不錯,我有這個形狀以同樣的方式工作 + 有漸變:

<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle">
<gradient
    android:angle="-90"
    android:centerColor="#F2F2F2"
    android:endColor="#ADA996"
    android:startColor="#DBDBDB" />
<stroke
    android:width="2dp"
    android:color="#000000" />
<corners android:radius="8dp" />

<padding
    android:bottom="4dp"
    android:left="4dp"
    android:right="4dp"
    android:top="4dp" />
</shape>
  • 嘗試使用上面的形狀,如果它無論如何都不起作用,請嘗試在單個按鈕上使用您的形狀 - 如果您看到您的形狀正常工作,您就會知道您的問題來自您的布局文件。

  • 也許您需要做的就是Invalidate Caches/Restart,您可能沒有錯誤,但您的應用程序正在使用來自緩存的舊形狀


查看完整回答
反對 回復 2023-05-10
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

您可以通過執行以下步驟來實現。


您必須為 Textview 和主布局創建兩個可繪制形狀的 xml


1. border_no_white_bg.xml


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

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="@color/white" />

<stroke

    android:width="1dp"

    android:color="@color/white" />


  <corners android:radius="6dp" />

</shape>




2. shape_button_orange_bg_with_radius.xml


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

 <shape xmlns:android="http://schemas.android.com/apk/res/android">


<stroke

    android:width="1dp"

    android:color="@color/black" />

  <corners android:radius="15dp" />

</shape>


3. Now in main_popup.xml, replace by below code

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

<LinearLayout

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_centerInParent="true"

    android:layout_margin="15dp"

    android:background="@drawable/border_no_white_bg"

    android:orientation="vertical">



    <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"

        android:layout_margin="10dp"

        android:background="#CCCCCC"

        android:baselineAligned="false"

        android:gravity="center"

        android:padding="10dp"

        android:text="Scegli un'operazione"

        android:textColor="#000"

        android:textSize="18sp" />


    <TextView

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_gravity="center_horizontal"

        android:layout_margin="10dp"

        android:baselineAligned="false"

        android:gravity="center"

        android:padding="10dp"

        android:text="Vuoi aprire o eliminare il test?"

        android:textColor="#000"

        android:textSize="18sp" />



    <RelativeLayout

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginBottom="15dp"

        android:orientation="horizontal">



        <Button

            android:layout_width="wrap_content"

            android:layout_height="40dp"

            android:layout_marginLeft="15dp"

            android:layout_marginRight="15dp"

            android:background="@drawable/shape_button_orange_bg_with_radius"

            android:text="Indietro"

            android:textColor="#000"

            android:textSize="14sp" />



        <LinearLayout

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_alignParentRight="true"

            android:orientation="horizontal">


            <Button

                android:layout_width="wrap_content"

                android:layout_height="40dp"

                android:layout_marginLeft="5dp"

                android:layout_marginRight="5dp"

                android:background="@drawable/shape_button_orange_bg_with_radius"

                android:text="Apri"

                android:textColor="#000"

                android:textSize="14sp" />


            <Button

                android:layout_width="wrap_content"

                android:layout_height="40dp"

                android:layout_marginLeft="5dp"

                android:layout_marginRight="15dp"

                android:background="@drawable/shape_button_orange_bg_with_radius"

                android:text="Elimina"

                android:textColor="#000"

                android:textSize="14sp" />

        </LinearLayout>


    </RelativeLayout>



     </LinearLayout>


 </RelativeLayout>



4. popup_window_animation

   Inside res->values->style.xml, add this code




<style name="popup_window_animation">

    <item name="android:windowEnterAnimation">@anim/fade_in</item>

    <item name="android:windowExitAnimation">@anim/fade_out</item>

</style>

現在創建一個方法來調用這個布局


public void showPopup(View anchorView) {


    final View popupView = getLayoutInflater().inflate(R.layout.main_popup, null);


    RelativeLayout layout_close;

    // Declare your views here


    final PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

    popupWindow.setAnimationStyle(R.style.popup_window_animation);


    layout_feedback_close = (RelativeLayout) popupView.findViewById(R.id.layout_feedback_close);

    // Here find view by ids


    layout_feedback_close.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {


        }

    });


    popupWindow.setFocusable(true);

    popupWindow.setBackgroundDrawable(new ColorDrawable());

    int location[] = new int[2];

    anchorView.getLocationOnScreen(location);

    popupWindow.showAtLocation(anchorView, Gravity.CENTER, location[0], location[1] + anchorView.getHeight());

     }


查看完整回答
反對 回復 2023-05-10
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

你的 shape_dialog.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="30dp" />

   <padding

    android:left="10dp"

    android:top="10dp"

    android:right="10dp"

    android:bottom="10dp" />

</shape>

您需要將對話框的背景設置為透明狀。


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


查看完整回答
反對 回復 2023-05-10
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

使用DialogClass 而不是AlertDialogBuilder.


代碼片段


showDialog()使用 Dialog 類而不是定義此方法AlertBuilder


public void showDialog() {


    final Dialog dialog = new Dialog(this);

    dialog.setContentView(R.layout.your_xml);


    Button dialog_neutral_btn = dialog.findViewById(R.id.dialog_neutral_btn);

    Button dialog_positive_btn = dialog.findViewById(R.id.dialog_positive_btn);

    Button dialog_negative_btn=dialog.findViewById(R.id.dialog_negative_btn);

    TextView dialog_titile = dialog.findViewById(R.id.dialog_titile);

    TextView dialog_tv = dialog.findViewById(R.id.dialog_tv);



   // do you stuff here , define click listeners


    dialog.show();

}

用法


 yourButton.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

           showDialog();

        }

    });

筆記:-


android.support.v7.app.AlertDialog

代替


android.app.AlertDialog

如果您想使用 AlertDialogBuilder


查看完整回答
反對 回復 2023-05-10
  • 5 回答
  • 0 關注
  • 304 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號