繁体   English   中英

我想在软键盘上方创建一个视图

[英]I want to create a view above the soft keyboard

我正在开发一个Android软键盘。 我想在软键盘上方创建一个布局。 只要键盘在屏幕上显示,布局就必须可见。

通过查看此图像,您可以轻松理解我的想法。

在此处输入图片说明

如果您正在编写键盘,则非常简单。 只需重写onCreateInputView即可返回所需的视图。 这可以很容易地成为线性布局,并带有额外的视图和键盘本身。

我看到的最大问题是您那里有一个EditText。 那是行不通的。 轻按EditText将断开InputConnection与实际应用的连接,并导致...未知的怪异行为。 我什至不确定行为是否会在不同的OS版本中定义。 这可能会导致键盘立即隐藏。 这可能会导致键盘完全停止工作。 该操作系统并不适合于此。

就像Jawad Ahmend在评论中提到的那样,可以使用ConstraintLayout将布局附加到键盘的底部,从而将布局附加到键盘的顶部。 您基本上需要执行以下步骤:

  1. adjustResize中的活动将windowSoftInputMode设置为adjustResize
     <activity android:name=".MainActivity" android:label="@string/app_name" android:windowSoftInputMode="adjustResize" android:theme="@style/AppTheme.NoActionBar"> 
  2. 将布局visibility设置为“消失”,并在其底部和父级底部之间添加一个布局约束。
     <LinearLayout android:id="@+id/layout_B" app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone"> 
  3. 接下来,您需要监视软键盘状态。 为了简短起见,我们只使用KeyboardVisibilityEvent 将以下行添加到您应用的build.gradle中并进行同步。
     implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.3.0' 
  4. 在您的活动中添加键盘侦听器,以将layout_B设置为在键盘打开并完成后可见。
     KeyboardVisibilityEvent.setEventListener(this) { keyboardIsOpen -> layout_B.visibility = if (keyboardIsOpen) { View.VISIBLE } else { View.GONE } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM