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

时间:2019-07-10 17:24:51

标签: android soft-keyboard

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

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

enter image description here

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

正如贾瓦德·阿门德(Jawad Ahmend)在评论中提到的那样,可以使用ConstraintLayout将布局附加到键盘底部,从而将其附加到键盘顶部。您基本上需要执行以下步骤:

  1. 针对清单中的活动,将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 library。将以下行添加到您应用的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
        }
    }