gpt4 book ai didi

android - 使警报对话框背景透明

转载 作者:太空宇宙 更新时间:2023-11-03 11:32:05 25 4
gpt4 key购买 nike

我正在 Android Jelly Beans OS 上创建一个警告对话框。一切正常,但我想要的是,我想要一个透明背景,而不是警报对话框的黑色背景。我阅读了很多关于 stackoverflow 的文章和用户的问题,但没有一篇能帮助我。

这是我的代码:

AlertDialog.Builder builder =  new AlertDialog.Builder(this, R.style.CustomAlertDialog);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog1, int which) {
gActivityResult = REQUEST_PICK_CONTACT;
onResume();
return;
} });
builder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog1, int which) {
return;
} });
View view = getLayoutInflater().inflate(R.layout.alert_dialog, null);
builder.setTitle(R.string.gender_age);
builder.setInverseBackgroundForced(false);
builder.setView (view);


dialog = builder.create ();

这是我在 res/values/styles.xml 中定义的 CustomAlertDialog

<style name="CustomAlertDialog" parent="@android:style/Theme.Dialog">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowBackground">@color/transparent_color</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:gravity">left</item>
</style>

这是color.xml

<resources>
<color name="transparent_color">#00000000</color>
</resources>

但这对我没有帮助。

我的问题:这可行吗?如果是的话,你能指导我正确的方向吗?

最佳答案

我发现这种方式与 AlertDialog.Builder 兼容。使用 Eclipse 中 Android“设备”选项卡中的“转储 View 层次结构”按钮,我看到了许多嵌套的 FrameLayouts,看起来背景在这些中,而不是在窗口中。

遍历这些 View 并将每个实际工作的背景设置为透明(我的自定义 View 然后漂浮在变暗的应用程序上,没有框架或背景,布局也没有变化)。我有一个自定义 View ,所以从它向下遍历,但是从 Window 向上遍历 ViewGroups 也应该可行。

我在我自己的带有自定义 View 的 DialogFragment 子类中使用 AlertDialog.Builder。

   @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
configureDialogBuilder(builder);

final LayoutInflater inflater = getActivity().getLayoutInflater();
customView = inflater.inflate(customViewId, null);
builder.setView(customView);

final AlertDialog dialog = builder.create();
return dialog;
}

@Override
public void onStart() {
super.onStart();
clearBackgrounds(customView);
}

private void clearBackgrounds(View view) {
while (view != null) {
view.setBackgroundResource(android.graphics.Color.TRANSPARENT);

final ViewParent parent = view.getParent();
if (parent instanceof View) {
view = (View) parent;
} else {
view = null;
}
}
}

关于android - 使警报对话框背景透明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202452/

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