如何更改对话框的形状?

Xav*_*uez 0 android background dialog

在我的应用程序中,我使用了许多对话框(弹出窗口),我想给它们一个圆角形状.

我创建这些弹出窗口的方式是这样的:

在java代码上我创建一个这样的函数:

private void showpopup(){

   dialog = new Dialog(this);
   dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
   dialog.setContentView(getLayoutInflater().inflate(R.layout.popup, null));
   dialog.setCancelable(false);



    TextView fin = (TextView) dialog.findViewById(R.id.solu);
    fin.setText("¡¡safsfasfsafs!!");  


   fin.setOnClickListener(new OnClickListener() {
           public void onClick(View v) {
               dialog.dismiss();
               }

   });   
  dialog.show();
}
Run Code Online (Sandbox Code Playgroud)

我在那里调用的布局是以这种方式创建的:

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
  >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
          android:background="@drawable/shape"
        android:orientation="vertical"
        android:padding="10dp" 
        >


<TextView
    android:id="@+id/solu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="25sp"
    android:padding="10dp"
    android:textAppearance="?android:attr/textAppearanceLarge" />
  </LinearLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

最后,我在后台调用的xml"形状"是这样的:

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

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

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

<stroke
android:width="1dp"
android:color="@color/black"/>

</shape>
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

在此输入图像描述

如你所见,我没有实现我想要的......

Luk*_*rog 7

尝试从这里使用我的答案:如何获得活动的圆形对话框主题(这与你想要做的事情是一样的).创建一个自定义主题(引用您自己的形状drawable):

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

    <style name="ThemeWithCorners" parent="android:Theme.Dialog">
        <item name="android:windowBackground">@drawable/another_test_drawable</item>
    </style>


</resources>
Run Code Online (Sandbox Code Playgroud)

(这将是res/themes.xml).然后简单地将主题添加到以下构造函数Dialog:

dialog = new Dialog(this, R.style.ThemeWithCorners);
Run Code Online (Sandbox Code Playgroud)