gpt4 book ai didi

android - 无法获取透明的 DialogFragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:46 29 4
gpt4 key购买 nike

我有一个看起来像那样的对话框 fragment 。

enter image description here

AlertDialog ad = builder.create();
Drawable d = new ColorDrawable(Color.BLACK);
d.setAlpha(130);
ad.getWindow().setBackgroundDrawable(d);

此代码使背景半透明。但是我的底部仍然有白色部分。我想去掉白色,只有半透明的背景

我已经尝试了很多我在其他帖子中看到的东西。

我不知道我必须在 DialogFragment、AlertDialog 和 LinearLayout 之间更改什么对象。

它可能不是 LinearLayout,因为当我增加边距时,没有任何东西在移动。

这是我的代码:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// setStyle(DialogFragment.STYLE_NORMAL, 0);
// setStyle(STYLE_NO_FRAME, R.style.CustomDialog);
// setStyle(STYLE_NO_FRAME, 0);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(
R.layout.share_or_die, null);

AlertDialog ad = builder.create();
Drawable d = new ColorDrawable(Color.BLACK);
d.setAlpha(130);
ad.getWindow().setBackgroundDrawable(d);
ad.setCanceledOnTouchOutside(true);
ad.getWindow().requestFeature(Window.FEATURE_NO_TITLE);

ad.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

return ad;

}

我只是在用户点击后退按钮时在 mainActivity 中调用它:

@Override
public void onBackPressed() {
if (isUserConnected && !hasShared) {
shareOnExitDialog = new ShareOnExitDialog();
shareOnExitDialog.setCancelable(true);
shareOnExitDialog.show(getSupportFragmentManager(), "Exit");
} else {
finish();
}


}

如有任何帮助,我们将不胜感激!

最佳答案

问题出在默认对话框主题中。基于thisthis答案是实现目标要容易得多。

Activity 应如下所示:

public class MyActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}

@Override
public void onBackPressed() {
MyDialogFragment.newInstance("title title").show(getSupportFragmentManager(), "dialog");
}
}

和 fragment :

public class MyDialogFragment extends android.support.v4.app.DialogFragment {

/**
* Create a new instance of MyDialogFragment, providing "title"
* as an argument.
*/
static MyDialogFragment newInstance(String title) {
MyDialogFragment frag = new MyDialogFragment();
Bundle args = new Bundle();

args.putString("title", title);
frag.setArguments(args);
return frag;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
final View view = getActivity().getLayoutInflater().inflate(R.layout.share_or_die, null);

final Drawable d = new ColorDrawable(Color.BLACK);
d.setAlpha(130);

dialog.getWindow().setBackgroundDrawable(d);
dialog.getWindow().setContentView(view);

final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.CENTER;

dialog.setCanceledOnTouchOutside(true);

return dialog;
}
}

此外,请务必执行以下操作:在 Activity 中的 setContentView() 之前,应添加 getWindow().requestFeature(Window.FEATURE_NO_TITLE) 以便使用 *NoTitleBar 风格。

结果是(我使用了 LinearLayout 和里面的单个 TextView): enter image description here

关于android - 无法获取透明的 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528552/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com