将自定义视图附加到 Android 键盘的顶部

Posted

技术标签:

【中文标题】将自定义视图附加到 Android 键盘的顶部【英文标题】:Attaching custom view to the top of Android keyboard 【发布时间】:2013-02-06 09:44:50 【问题描述】:

android 软键盘顶部附加 xml 中定义的布局的最简单方法是什么。 此视图应仅在键盘出现时出现。

【问题讨论】:

【参考方案1】:

我认为最好的方法是检测键盘何时出现,然后将视图附加到屏幕底部(调整所有布局后它将位于键盘上方)。

【讨论】:

问题是我希望键盘浮动在我的布局之上并且不会改变它(我正在使用android:windowSoftInputMode="adjustPan" 比我认为这是完全不可能做到这一点(我不知道/想象一种方法来做到这一点)【参考方案2】:

我认为这篇文章与另一个有很多关系:How to draw view on top of soft keyboard like WhatsApp?,并且有几个解决这个问题的方法。

【讨论】:

【参考方案3】:

我认为这样做更简洁。

    定义一个布局资源文件以用作您的自定义视图

    创建一个扩展此布局资源文件并将其作为视图返回的方法: 代码片段

    公共视图 returnPayKeyView() 查看 simpleView = getLayoutInflater().inflate(R.layout.simpleresource,null);

    返回简单视图;

    使用 setCandidatesView 方法将此返回的视图设置为候选视图

返回的视图将显示在您的键盘上方,使用膨胀的 xml 布局资源。

【讨论】:

【参考方案4】:

一种方法是将您常用的视图布局包装在 FrameLayout 中,并将您想要的位放在框架内的键盘上方,以及您的其他视图布局,布局重心为底部。

我的布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_>

    <ScrollView
        android:layout_
        android:layout_>

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical">

            <!-- all your stuff... -->

        </LinearLayout>

    </ScrollView>

    <LinearLayout
        android:id="@+id/stuffAboveKeyboardLayout"
        android:layout_
        android:layout_
        android:layout_gravity="bottom"
        android:orientation="horizontal"
        android:background="#DDD">

        <!-- stuff above keyboard... -->

    </LinearLayout>

</FrameLayout>

缺点是即使键盘隐藏它也会显示 - 但是当键盘显示/隐藏时应该可以显示/隐藏视图:How do I Detect if Software Keyboard is Visible on Android Device?

【讨论】:

以上是关于将自定义视图附加到 Android 键盘的顶部的主要内容,如果未能解决你的问题,请参考以下文章

将自定义元素添加到 ngRepeat 列表

将视图附加到Android中的自定义RelativeLayout

将自定义标题容器修复到代号​​一的表单顶部

如何将自定义数据从ui-router中的视图传递到某个状态?

UIAlertController - 将自定义视图添加到操作表

无法将自定义按钮添加到导航控制器的工具栏