我试图让这个简单的Dialog半透明:
class TestDialog extends SherlockDialogFragment
{
public TestDialog()
{
super();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceStateBundle )
{
AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
// Get the layout inflater
LayoutInflater inflater1 = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder1.setView(inflater1.inflate(R.layout.dlg_test, null))
// Add action buttons
.setPositiveButton( "Ok", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
// sign in the user ...
}
})
.setNegativeButton( "Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
}
});
return builder1.create();
}
}
布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
android:hint="User name" />
</LinearLayout>
我尝试了所有方法,从使用透明的.png作为线性布局的背景可绘制,到将alpha字段设置为0.5,使用等于0的可绘制颜色。我无法进行该对话半透明。即使有可能,我也不知道。 我想要创建的是一个对话框,如下图中的面板:。 谢谢。 注1:所需的最小sdk是版本8,目标是最新的(实际上是v17)。
答案 0 :(得分:5)
而不是:
return builder1.create();
尝试这个:
Dialog dialog = builder1.create();
Drawable d = new ColorDrawable(Color.BLACK);
d.setAlpha(130);
dialog.getWindow().setBackgroundDrawable(d);
return dialog;
答案 1 :(得分:1)
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
return dialog;
}
你可以把
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
在对话框的onCreateView中。
答案 2 :(得分:0)
您可以在对话框片段引用中尝试这两个主题中的任何一个。
yourdialogFragment.setStyle(style,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
或
yourdialogFragment.setStyle(style,android.R.style.Theme_Holo_Light_Dialog);
希望这会有所帮助。
答案 3 :(得分:0)
您可以尝试使背景透明,如果超级类是对话框,请使用此选项:
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
或者如果您的超类是DialogFragment:
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
我的另一个解决方案类似于“kaushal trivedi”。 使用DialogFragments:
public class MyDialogFragment extends DialogFragment {
...
@Override
public void onCreate(Bundle savedInstance){
super.onCreate(savedInstance);
setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.my_dialog, container,false);
}
}
这使您的对话框成为全屏且没有背景,因此您可以在其中放置您想要的内容。
答案 4 :(得分:0)
试试这个
public class Dialogs extends DialogFragment {
public Dialogs() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style. Theme_WallpaperSettings);
}
}
答案 5 :(得分:0)
这是我用AlertDialog实现半透明的方法。
创建自定义样式:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:colorBackground">#32FFFFFF</item>
</style>
然后使用以下命令创建对话框:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog);
AlertDialog dialog = builder.create();
链接到我对相关问题的回答:https://stackoverflow.com/a/36311627/4344057