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

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

【问题讨论】:

    标签: android keyboard


    【解决方案1】:

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

    【讨论】:

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

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

    【讨论】:

      【解决方案3】:

      我认为这样做更简洁。

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

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

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

        返回简单视图;

        }

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

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

      【讨论】:

        【解决方案4】:

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

        我的布局是这样的:

        <?xml version="1.0" encoding="utf-8"?>
        <FrameLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        
            <ScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent">
        
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
        
                    <!-- all your stuff... -->
        
                </LinearLayout>
        
            </ScrollView>
        
            <LinearLayout
                android:id="@+id/stuffAboveKeyboardLayout"
                android:layout_width="match_parent"
                android:layout_height="60dp"
                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?

        【讨论】:

          猜你喜欢
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-12
          • 2019-04-17
          • 1970-01-01
          • 2021-10-17
          • 1970-01-01
          相关资源
          最近更新 更多