当键盘在屏幕上时,是否可以在键盘上方的Android中显示Toast消息,而不是在屏幕上显示?
答案 0 :(得分:6)
您可以通过以下代码更改烤面包位置。
Toast toast= Toast.makeText(getApplicationContext(),
"Your string here", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
答案 1 :(得分:5)
定位敬酒
屏幕底部附近会出现标准吐司通知, 水平居中。你可以改变这个位置
setGravity(int, int, int)
方法。这接受三个参数:aGravity
常量,x-position
偏移量和y-position
偏移量。例如,如果你决定吐司应该出现在 左上角,您可以像这样设置重力:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
如果要将位置微移到右侧,请增加值 第二个参数。要轻推它,增加最后一个的值 参数。
答案 2 :(得分:3)
答案 3 :(得分:1)
三年多以后...而Android终于有了API
如Chris Banes所示,我们现在可以使用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())
祝酒快乐!