热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dialogandroid定位,在屏幕android上更改Dialog的位置

在屏幕android上更改Dialog的位置我在我的活动中做了一个简单的AlertDialog:ViewviewlayoutInflater.inflate(R.la

在屏幕android上更改Dialog的位置

我在我的活动中做了一个简单的AlertDialog:

View view = layoutInflater.inflate(R.layout.my_dialog, null);

AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this)

.setView(view)

.create();

infoDialog.show();

使用上面的代码,对话框显示在屏幕的中心(大约)。

我想知道,如何自定义对话框位置以使其显示在顶部操作栏下? (无论如何改变对话的重力或某些东西?)以及如何根据我的代码做到这一点?

8个解决方案

198 votes

我使用此代码显示屏幕底部的对话框:

Dialog dlg = ;

Window window = dlg.getWindow();

WindowManager.LayoutParams wlp = window.getAttributes();

wlp.gravity = Gravity.BOTTOM;

wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;

window.setAttributes(wlp);

如果需要,此代码还可以防止android调暗对话框的背景。 您应该能够更改重力参数以移动对话框

Aleks G answered 2019-08-13T20:20:00Z

22 votes

private void showPictureialog() {

final Dialog dialog = new Dialog(this,

android.R.style.Theme_Translucent_NoTitleBar);

// Setting dialogview

Window window = dialog.getWindow();

window.setGravity(Gravity.CENTER);

window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

dialog.setTitle(null);

dialog.setContentView(R.layout.selectpic_dialog);

dialog.setCancelable(true);

dialog.show();

}

您可以根据重力和布局参数自定义对话框根据您的要求更改重力和布局参数

Ramesh Solanki answered 2019-08-13T20:20:25Z

8 votes

对我来说,这很好用,我试图将对话框放在textview底部的某个位置,在那里它被选中。

public void setPosition(int yValue) {

Window window = getWindow();

WindowManager.LayoutParams param = window.getAttributes();

param.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;

param.y = yValue;

window.setAttributes(param);

window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

}

Wahib Ul Haq answered 2019-08-13T20:20:49Z

8 votes

我在这里找到了@gypsicoder代码的代码片段

private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setItems(items, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) {

if(item == 0) {

} else if(item == 1) {

} else if(item == 2) {

}

}

});

AlertDialog dialog = builder.create();

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

wmlp.gravity = Gravity.TOP | Gravity.LEFT;

wmlp.x = 100; //x position

wmlp.y = 100; //y position

dialog.show();

这里x位置的值是从左到右的像素。 对于y位置值是从下到上。

Md. Sajedul Karim answered 2019-08-13T20:21:16Z

6 votes

新BottomSheetDialog:

BottomSheetDialog dialog = new BottomSheetDialog(YourActivity.this);

dialog.setContentView(YourView);

dialog.show();

mohamed murashid answered 2019-08-13T20:21:40Z

4 votes

只需将其添加到您的代码中:

dialog.getWindow().setGravity(Gravity.BOTTOM);

Techashonline answered 2019-08-13T20:22:04Z

1 votes

dialog.getWindow().getAttributes().gravity = Gravity.BOTTOM;

Hossein Mansouri answered 2019-08-13T20:22:22Z

0 votes

public class MyDialogFragment extends DialogFragment{

protected void setDialogGravity(int gravity) {

Dialog dialog = getDialog();

if (dialog != null) {

Window window = dialog.getWindow();

if (window != null) {

WindowManager.LayoutParams params = window.getAttributes();

params.width = WindowManager.LayoutParams.MATCH_PARENT;

params.height = WindowManager.LayoutParams.MATCH_PARENT;

params.horizontalMargin = 0;

params.gravity = gravity;

params.dimAmount = 0;

params.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;

window.setAttributes(params);

}

}

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

super.onCreateView(inflater,container,savedInstanceState);

return inflater.inflate(R.layout.my_dialog, null);

}

@Override

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

super.onViewCreated(view, savedInstanceState);

setDialogGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);

}

}

NickUnuchek answered 2019-08-13T20:22:39Z



推荐阅读
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 欢乐的票圈重构之旅——RecyclerView的头尾布局增加
    项目重构的Git地址:https:github.comrazerdpFriendCircletreemain-dev项目同步更新的文集:http:www.jianshu.comno ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
author-avatar
殉情放开那只小兔子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有