Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在牛轧糖中放置烤面包片';什么是多窗口模式?_Android_Android Toast_Android 7.0 Nougat - Fatal编程技术网

Android 如何在牛轧糖中放置烤面包片';什么是多窗口模式?

Android 如何在牛轧糖中放置烤面包片';什么是多窗口模式?,android,android-toast,android-7.0-nougat,Android,Android Toast,Android 7.0 Nougat,在使用牛轧糖新的多窗口模式时,我注意到,如果我自己的应用程序在纵向模式的顶部窗口中,则另一个应用程序上将显示一个Toast 这是。。。一点也不好。因此,我尝试将我的Toast定位到“如何在Android中更改Toast的位置?” 不幸的是,Gravity似乎被解释为“屏幕重力”,而不是“我的窗口重力” 如何在我的窗口底部附近水平居中显示烤面包片 使用带有参数的setGravity方法:xOffset,yoOffset Toast toast= Toast.makeText(getApplica

在使用牛轧糖新的多窗口模式时,我注意到,如果我自己的应用程序在纵向模式的顶部窗口中,则另一个应用程序上将显示一个
Toast

这是。。。一点也不好。因此,我尝试将我的
Toast
定位到“如何在Android中更改Toast的位置?”

不幸的是,
Gravity
似乎被解释为“屏幕重力”,而不是“我的窗口重力”

如何在我的窗口底部附近水平居中显示
烤面包片


使用带有参数的setGravity方法:xOffset,yoOffset

Toast toast= Toast.makeText(getApplicationContext(),"Message Toast", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();

我怀疑这是故意的行为。除此之外,没有任何直接的方式来实现你的愿望,据介绍,祝酒词主要用于传达系统信息,应该出现在屏幕底部

我的猜测是,任何系统消息都应该属于整个设备,并且不一定是特定于应用程序的,因此这种一致的行为是有意义的。也就是说,我可以理解为什么这种行为是不受欢迎的,因为Toast最终占据了其中一个应用程序屏幕的25%。。。然而,不管祝酒词的位置如何,它都将吞噬屏幕上的不动产,无论是在你的应用程序上还是在下面的应用程序上

如果您真的想实现一个变通方法,下面是垂直偏移Toast的实现。一个轻微的变化应该达到景观模式,但它有点芬尼基

View root = findViewById(R.id.root_main);

int[] xy = new int[2];
root.getLocationOnScreen(xy);

DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(displayMetrics);
int devHeight = displayMetrics.heightPixels;

int viewHeight = root.getHeight();

Toast toast = Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG);
int yOffset = Math.abs(xy[1] - devHeight + viewHeight) + toast.getYOffset();
toast.setGravity(Gravity.BOTTOM, 0, yOffset);
toast.show();

谢谢你的回答,但是用<代码>重力。CcType,水平 <代码> toAST显示在整个屏幕的中间,这意味着它将至少部分地出现在我的第二张图片的另一个应用程序的上方。另一方面,如果我的应用程序处于纵向和较低的窗口中,Gravity.TOP将导致问题。就像我说的:重力与整个屏幕有关,而不是与我的窗口有关。谢谢你的回答,但我认为每个应用程序都可能会使用祝酒来发送小消息,如图中所示。如果大家一致认为祝酒词只用于系统消息,为什么他们要解释如何定制我的祝酒词?我用它们来做“游戏结束”或“向播放列表中添加10首歌曲”之类的事情。(续)我认为如果你用标准的祝酒词,用户甚至看不到消息来自哪个应用,那真的很糟糕(甚至很危险)。当然,我不想涉及其他应用的领域。关于解决方法:你能展示一些代码吗?我想用我的小样本应用程序来测试这个问题。这是一个非常公平的观点。我认为Android的指导方针有时会非常矛盾,因为他们对“材料设计”进行了大的改革。不过,更多的是扮演魔鬼代言人的角色;如果你正在展示与你的应用程序交互的用户的祝酒词,掩盖他们没有交互的应用程序真的是犯罪吗?(+1因为所有的好想法,即使我没有得到祝酒词的位置)以及关于“这真的是犯罪吗”-问题:我可能错了,但我认为用户可以观看视频(不是我的窗口)写邮件时(我的窗口)。“在多窗口模式下,应用程序可以处于暂停状态,并且用户仍然可以看到。即使在暂停状态下,应用程序也可能需要继续其活动。例如,处于暂停模式但可见的视频播放应用程序应继续显示其视频。”
View root = findViewById(R.id.root_main);

int[] xy = new int[2];
root.getLocationOnScreen(xy);

DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(displayMetrics);
int devHeight = displayMetrics.heightPixels;

int viewHeight = root.getHeight();

Toast toast = Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_LONG);
int yOffset = Math.abs(xy[1] - devHeight + viewHeight) + toast.getYOffset();
toast.setGravity(Gravity.BOTTOM, 0, yOffset);
toast.show();