android 窗口圆角
网上关于此类的话题很多,特别是Dialog显示圆角问题。下面首先给出两个结论:1.所有的View都是矩形的,即使设置了圆角依旧显示矩形(window非透明背景便于用户观察)2.圆角是针对Window的,并非View3.圆角实现方法即:dialog.getWindow().setBackgroundDrawableResource()所以当我们为非透明window的View设置圆角的时候会出现如下问
·
网上关于此类的话题很多,特别是Dialog显示圆角问题。下面首先给出两个结论:
1.所有的View都是矩形的,即使设置了圆角依旧显示矩形(window非透明背景便于用户观察)
2.圆角是针对Window的,并非View
3.圆角实现方法即:dialog.getWindow().setBackgroundDrawableResource()
所以当我们为非透明window的View设置圆角的时候会出现如下问题(结论1):
所以既然圆角是针对window的,那么我们把View的圆角背景去掉,直接设置window的背景(结论2)
dialog.getWindow().setBackgroundDrawableResource(R.drawable.round_orner);
总结设置圆角窗口的方法即:getWindow().setBackgroundDrawableResource
dialog.getWindow().setBackgroundDrawableResource(R.drawable.round_orner);
下面是源码,因为圆角和view无关,所以就不贴关于view的xml。
圆角背景:round_orner.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--描边设置-->
<stroke android:color="@android:color/holo_blue_dark"
android:width="1px"
/>
<!--填充设置-->
<solid android:color="@android:color/white"/>
<!--圆角设置-->
<corners android:radius="20dp"/>
</shape>
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//builder.setTitle("title");
//builder.setMessage("message");
//builder.setIcon(R.mipmap.ic_launcher_round);
builder.setCancelable(true);
//View dlg_view = LayoutInflater.from(MainActivity.this).inflate(R.layout.activity_owner_draw,null);
//View dlg_view = View.inflate(MainActivity.this,R.layout.activity_owner_draw,null);
View dlg_view = getLayoutInflater().inflate(R.layout.round_corne_layout,null,false);
//builder.setView(dlg_view);
AlertDialog dialog = builder.create();
//View dlg_view = LayoutInflater.from(MainActivity.this).inflate()
//getLayoutInflater().inflate(R.layout.activity_main,null,false)
dialog.setView(dlg_view);
dialog.getWindow().setBackgroundDrawableResource(R.drawable.round_orner);
dialog.show();
}
});
如果看完之后还是不懂,可以学习一下Activity、View、Window关系,这样就一目了然了。
更多推荐
已为社区贡献9条内容
所有评论(0)