Android对话 – 圆angular和透明度

我试图做一个自定义的圆angular对话android对话框。 我目前的尝试给了我这个结果。

圆角对话框

正如你所看到的,angular落是圆的,但它仍然保持白色的angular落完好无损。

下面是我放在可绘制文件夹中的xml,用于创build带有圆angular的红色边框的蓝色对话框。

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/transparent_black" /> <corners android:radius="@dimen/border_radius"/> </shape> </item> <item android:left="@dimen/border_width" android:right="@dimen/border_width" android:top="@dimen/border_width" android:bottom="@dimen/border_width" > <shape android:shape="rectangle"> <solid android:color="@color/blue" /> <corners android:radius="@dimen/border_radius"/> </shape> </item> </layer-list> 

以下是对话框的布局。

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/fill" android:orientation="vertical" android:layout_margin="@dimen/spacing_normal" android:padding="@dimen/spacing_normal" android:background="@drawable/border_error_dialog" > <RelativeLayout style="@style/block" android:layout_gravity="center" > <ImageView android:id="@+id/imageView1" style="@style/wrap" android:layout_alignParentLeft="true" android:layout_centerHorizontal="true" android:contentDescription="@string/content_description_filler" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/textView1" style="@style/error_text" android:layout_centerVertical="true" android:layout_toRightOf="@+id/imageView1" android:text="@string/error_login" /> </RelativeLayout> <Button android:id="@+id/button1" style="@style/wrap" android:layout_gravity="center" android:text="Button" /> </LinearLayout> 

下面是我创build对话框的活动。

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this); View child = getLayoutInflater().inflate(R.layout.dialog_custom_tom, null); alertDialogBuilder.setView(child); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } }); } 

Solutions Collecting From Web of "Android对话 – 圆angular和透明度"

我find的唯一解决scheme就是在这里 。 使用对话框而不是AlertDialog并设置透明背景:
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
所以你不能使用这个构build器。 但是,如果遵循最佳指南,则还可以在DialogFragment的onCreateDialogcallback中使用新的Dialog()。

这也适用于姜饼。

除了分层绘图可以简化为一个具有xml元素<stroke>边界的形状。

当对话框扩展DialogFragment时,我有类似的问题,并修复这个使用:

 dialog.setStyle(DialogFragment.STYLE_NO_FRAME, 0); 

喜欢这个:

 public class ConfirmBDialog extends DialogFragment { public static ConfirmBDialog newInstance() { ConfirmBDialog dialog = new ConfirmBDialog(); Bundle bundle = new Bundle(); dialog.setArguments(bundle); dialog.setStyle(DialogFragment.STYLE_NO_FRAME, 0); return dialog; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.confirm_dialog, container, true); getDialog().setCanceledOnTouchOutside(true); return view; } 

}

希望这可以帮助。

你试一试

 myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

在你的Java文件保持下面的代码,并更改您的布局名称

 View mView =LayoutInflater.from(mContext).inflate(R.layout.layout_pob,null); alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

在这些angular落使用具有透明度的9-patch PNG。

经过很长一段时间的努力和我遇到的一些进一步的问题,我发现了一个相当简洁的答案,适用于API <11:

https://stackoverflow.com/a/25887869/855597

下面的代码解决了这个问题

 MyDialog mydialog = new MyDialog(this, "for testing", new myOnClickListener() { @Override public void onPositiveButtonClick() { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "I am positive button in the dialog", Toast.LENGTH_LONG).show(); } @Override public void onNegativeButtonClick() { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "I am negative button in the dialog", Toast.LENGTH_LONG).show(); } }); // this will remove rectangle frame around the Dialog mydialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); mydialog.show(); 

谢谢,Nagendra