2017-10-14 162 views
1

我想在Android中为对话窗口添加边框。使用下列行将边框添加到android中的对话框窗口

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:left="5dp" 
     android:right="5dp" 
     android:bottom="5dp" 
     android:top="5dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffbf80" /> 
     <corners android:radius="30dp" /> 
     <padding 
     android:left="1dp" 
     android:top="1dp" 
     android:right="1dp" 
     android:bottom="1dp" /> 
    </shape> 
    </item> 
</layer-list> 

要添加边框对话框中可绘制添加圆角的对话窗口,我试图通过增加行程元件如下

<shape android:shape="rectangle"> 
    <solid 
    android:color="#ffbf80" /> 
    <stroke android:color="#ff3300" android:width="2dp"/> 
    <corners 
    android:radius="30dp" /> 
    <padding 
    android:left="1dp" 
    android:top="1dp" 
    android:right="1dp" 
    android:bottom="1dp" /> 
</shape> 

但是,这是建立对话框中的每个元素(如textview,图标,按钮)的边框也是如此。我只想要一个窗口的边框。

我已创建使用AlertDialog.Builder在Java代码中的警告对话框中,

myDialogBuilder=new AlertDialog.Builder(new 
ContextThemeWrapper(getActivity(), 
R.style.CustomDialog)) 
.setTitle(title.getText().toString()) 
.setMessage(myText) 
.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) 
       { 
       getDialog().dismiss(); 
       } 
       }); 

myDialog=myDialogBuilder.create(); 

myDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
       @Override 
       public void onShow(DialogInterface dialog) { 
        Window view=((AlertDialog)dialog).getWindow(); 
        view.setBackgroundDrawable(new 
        ColorDrawable(Color.TRANSPARENT)); 
       ... 
       } 
}); 

我在styles.xml下面的对话框

<style name="CustomDialog" parent="@style/ThemeOverlay.AppCompat.Dialog"> 
    <item name="android:backgroundDimEnabled">true</item> 
    <item name="android:background">@drawable/dialog_bg</item> 
    <item name="android:textColorPrimary">@color/my_textcolor</item> 
</style> 

请帮助我了解我应该做什么改变,以便显示警告对话框边框。

感谢

回答

1

我能够通过在代码中进行以下更改来解决我的警报对话框的边框问题。

而不是创建对话框时指定的主题,我加入了绘制资源的对话窗口中dialog.setOnShowListener()

Window view=((AlertDialog)dialog).getWindow(); 
view.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
// to get rounded corners and border for dialog window 
view.setBackgroundDrawableResource(R.drawable.dialog_bg); 

我只需要在我的警告对话框标题,消息和一个按钮。所以我使用标准的AlertDialog.Builder创建它的方式,尽管它也可以使用自定义布局文件并设置视图来完成。

0

我在我的应用程序圆角对话,但我用自定义对话框与自定义布局,而不是标准的AlertDialog,当然这需要更多的工作。

  • 定义您MyDialogStyle在styles.xml有:
    <item name="android:background">@drawable/my_rounded_background</item>

  • 在对话框布局XML的根项目添加属性:
    style="@style/MyDialogStyle"

  • 在对话框类的onCreate加:

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

+0

感谢您的回复。我已经添加了您提到的三件事,但唯一的区别是我在代码中创建了警报对话框而不是使用自定义布局。这就是为什么它不工作? – Sri

+0

如果您仍在使用“myDialogBu​​ilder = new AlertDialog.Builder(..)”,那么您不会创建自定义对话框,并且您为自定义对话框创建的类不执行任何操作,因为您没有使用它。将其更改为“myDialog = new MyCustomDialog()”或任何您称为自定义对话框类的内容。创建自定义对话框意味着创建一个扩展Dialog Android类的Java类。 –

+0

我认为对于api 11及以上版本,我们可以使用AlertDialog.Builder创建具有自定义样式的警告对话框。请检查此链接https:// stackoverflow。COM /问题/ 14770400/Android的alertdialog造型。 我已经能够为警报对话框设置背景颜色和圆角,但它是单独的行程不起作用。当我在可绘制文件中添加描边形状时,标题,按钮,消息和警报对话框中的所有内容都会显示一个圆形边框。我只需要一个用于警报对话框的单个边框。 – Sri