Android 怎么用代码修改dialogCornerRadius
时间: 2024-09-10 11:22:34 浏览: 61
在Android中,如果你想通过代码动态修改DialogFragment或AlertDialog的圆角,你可以直接操作其根布局,比如使用`setStyle()`方法结合自定义布局资源,然后在该布局中设置corners属性。以下是步骤:
1. 首先,创建一个自定义的Dialog主题。例如,如果你有一个XML文件叫做`custom_dialog_style.xml`:
```xml
<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:cornerRadius">?attr/dialogCornerRadius</item> <!-- 这里可以指定圆角 -->
</style>
```
2. 然后,在需要展示Dialog的地方,使用这个主题:
```java
Dialog dialog = new Dialog(context, R.style.CustomDialogTheme);
// 或者如果你使用的是DialogFragment
DialogFragment df = new YourDialogFragment();
df.setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialogTheme);
```
3. 接下来,你可以在Activity或Fragment中设置`dialogCornerRadius`。注意,这需要你在应用程序的主题(如`styles.xml`)中定义一个attr,并提供对应的值。例如:
```xml
<resources>
<dimen name="dialog_cornerRadius">4dp</dimen> <!-- 假设你希望圆角大小为4dp -->
</resources>
```
然后在Java中获取并赋值:
```java
int cornerRadius = context.getResources().getDimensionPixelSize(R.dimen.dialog_cornerRadius);
dialog.getWindow().setCornerRadius(cornerRadius);
```
阅读全文