我有一个应用程序,它有一个按钮,按下时会触发一个具有默认对话框形状的对话框,我想知道是否可以将对话框的默认形状更改为椭圆形,并对其应用特殊样式,
如下面所附图片所述:
1- 默认对话框形状:
2-椭圆形对话框形状(我试图实现):
我的对话代码:
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog);
TextView text = (TextView) dialog.findViewById(R.id.dialog_text);
text.setText(Html.fromHtml(getString(R.string.text_4)));
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.pic);
Button dialogButton = (Button) dialog.findViewById(R.id.dialog_Button);
dialogButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
});
}
默认对话框的样式代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="2dp" android:height="2dp" android:color="#B22222" />
<solid android:color="#FCE6C9" />
<padding android:left="2dp" android:top="2dp" android:right="2dp"
android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
我希望通过代码而不是使用 9 block 图像来完成此操作,这样可以轻松控制 dilaoge 尺寸并根据需要调整其中的文本,
任何建议将不胜感激,谢谢。
最佳答案
不太确定如何在 android 上执行此操作,但我在 java 中使用的方法是使 JFrame 或 JDialog 渲染表面透明然后在里面画我自己的自定义形状。为了使它们透明,我使用 AWTUtilities.setWindowOpacity
在本文中,您会发现其他想法,例如在渲染框架或对话框之前捕获桌面并使用它来修补框架:
http://today.java.net/pub/a/today/2008/03/18/translucent-and-shaped-swing-windows.html
更多信息:
http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/
这里有一个实现,不适用于 Android,但它可能会有所帮助:
http://www.codeproject.com/KB/java/shaped-transparent-jframe.aspx
关于java - Android 椭圆形对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856114/