Android 在键盘上方显示烤面包片
当键盘在屏幕上时,是否可以在键盘上方而不是在键盘上显示祝酒词 定位您的祝酒词 屏幕底部会出现标准的toast通知, 水平居中。您可以使用Android 在键盘上方显示烤面包片,android,keyboard,toast,Android,Keyboard,Toast,当键盘在屏幕上时,是否可以在键盘上方而不是在键盘上显示祝酒词 定位您的祝酒词 屏幕底部会出现标准的toast通知, 水平居中。您可以使用 setGravity(int,int,int)方法。它接受三个参数:a 重力常数、x位置偏移和y位置偏移 例如,如果您决定祝酒词应出现在 左上角,可以按如下方式设置重力: toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0); 如果要向右移动该位置,请增加 第二个参数。若要向下移动,请增加最后一个的值 参数 您可以
setGravity(int,int,int)
方法。它接受三个参数:a
重力
常数、x位置偏移和y位置偏移
例如,如果您决定祝酒词应出现在
左上角,可以按如下方式设置重力:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
如果要向右移动该位置,请增加
第二个参数。若要向下移动,请增加最后一个的值
参数
您可以通过以下代码更改toast的位置
Toast toast= Toast.makeText(getApplicationContext(),
"Your string here", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
1.)检查键盘是否可见:
2.)如果键盘可见,则在不同位置显示土司:
三年多之后。。。Android终于有了API 如所示,我们现在可以使用
WindowInsets
API
解决软键盘上面的Toast问题的核心API是:
val insets = ViewCompat.getRootWindowInsets(view) // get insets
val imeVisible = insets.isVisible(Type.ime()) // is keyboard visible?
val imeHeight = insets.getInsets(Type.ime()).bottom // voila, your offset
因此,我构建了一个扩展函数来Toast:
/**
* Shows toast above soft keyboard, if exists
*/
fun Toast.showAboveKeyboard(containerView: View) {
// get y offset to let toast appear above soft keyboard
val insets = ViewCompat.getRootWindowInsets(containerView)
val imeVisible = insets?.isVisible(WindowInsetsCompat.Type.ime()) ?: false
val imeHeight = insets?.getInsets(WindowInsetsCompat.Type.ime())?.bottom
val fallbackYOffset = containerView.resources.getDimensionPixelOffset(R.dimen.thirtytwo_grid_unit)
val noSoftKeyboardYOffset =
containerView.resources.getDimensionPixelOffset(R.dimen.three_grid_unit)
setGravity(
Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM,
0,
if (imeVisible) imeHeight ?: fallbackYOffset else noSoftKeyboardYOffset
)
show()
}
片段中的用法:
Toast.makeText(requireContext(), "Hello Toast", Toast.LENGTH_SHORT)
.showAboveKeyboard(requireView())
干杯快乐 可能是重复的嘿,你会因为合法的反对票而失去代表吗?我刚刚否决了这个剽窃的答案,失去了1个代表…嗨,亚历山大。谢谢你的回答。这看起来很有希望:)我会试着看一看,如果它有效,我可能会在这里更改正确的答案。不过,我不确定什么时候能做到。