gpt4 book ai didi

android - 叠加对话框 - 对齐 View

转载 作者:行者123 更新时间:2023-11-30 03:04:53 26 4
gpt4 key购买 nike

我想为我的应用实现一个帮助叠加层。它应该是这样的:How do I create a help overlay like you see in a few Android apps and ICS?

final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.coach_mark);
dialog.setCanceledOnTouchOutside(true);
//for dismissing anywhere you touch
View masterView = dialog.findViewById(R.id.coach_mark_master_view);
masterView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();

这很好用。 coach_mark.xml 的 RelativeLayout 显示在我通过 setContentView() 设置的现有布局之上。现在我想将 coach_mark.xml 的 View 与现有布局的相应 View 对齐,以便对分辨率和屏幕尺寸做出动态 react 。这是我尝试过的:

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.BELOW,R.id.view_of_main_layout);
view_of_the_overlay.setLayoutParams(lp);

但是 View 只显示在屏幕中间。我唯一可以实现的是将 View 与屏幕底部对齐,但这不是我想要做的。

感谢您的帮助。

最佳答案

你可以使用 PopupWindow :

PopupWindow popup=new PopupWindow(this);
popup.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
popup.setWindowLayoutMode(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT);
popup.setContentView(R.layout.coach_mark);
View view=findById(R.id.view_of_main_layout);
int[] viewLocation=new int[2];
view.getLocationInWindow(viewLocation)
popup.showAtLocation(view, Gravity.TOP|Gravity.LEFT, viewLocation[0],viewLocation[1]);

您还可以使用最后两个变量(X 和 Y offest)调整弹出位置。它们的值也可以是负数。

关于android - 叠加对话框 - 对齐 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21969579/

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