将自定义视图附加到 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 键盘的顶部的主要内容,如果未能解决你的问题,请参考以下文章
将视图附加到Android中的自定义RelativeLayout
如何将自定义数据从ui-router中的视图传递到某个状态?