【问题标题】:Removing "Persistent Footer Button" When Keyboard is Called - Material Design调用键盘时删除“持久页脚按钮” - Material Design
【发布时间】:2015-06-18 06:06:54
【问题描述】:

我的问题如下,每次用户调用软键盘在同一布局上的 editText 上键入时,我该如何删除包含按钮的 RelativeLayout。正如您在下面的图片中看到的那样,每次用户输入信息时,红色框中的按钮都需要消失,并在键盘被取消后重新出现。

仅供参考 - 当键盘不在视图中时,RelativeLayout 需要固定在底部,因此“layout_alignParentBottom='false' 对我来说不是解决方案。我认为这很可能需要以编程方式完成。

任何有关如何解决此问题的建议将不胜感激。

    <RelativeLayout
    android:id="@+id/footer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_margin="@dimen/activity_margin_zero"
    android:background="@color/background"
    android:minHeight="48dp"
    android:padding="@dimen/activity_margin_zero">

这是 Google Android 开发者网站所描述的“Persistent Footer Button”

这就是我所拥有的,但是当键盘在屏幕上时,所谓的“持久页脚按钮”应该会消失。

按钮在显示或消失时应位于键盘后面,以便用户可以输入更多屏幕真实状态的信息。

【问题讨论】:

    标签: java android xml material-design


    【解决方案1】:

    您是否尝试过修改活动的windowSoftInputModeproperty? 在您的清单中,为相关活动设置属性,如下所示:

    <activity android:name="MyActivity"
         ...
         android:windowSoftInputMode="adjustPan"
         ... >
    </activity>
    

    【讨论】:

    • 问题不在于没有足够的空间......只是RelativeLayout“按应有的方式”粘在视图的底部,因为它按键盘设计时的设计工作不可见(这样做的目的是让用户可以滚动屏幕,即使活动非常“高”,按钮也始终可见)。问题是当用户输入信息时RelativeLayout应该消失(当键盘在屏幕上时用户的焦点应该在输入数据上)按钮可以在用户关闭键盘后返回。
    【解决方案2】:
    RelativeLayout footer = (RelativeLayout) findViewById(R.id.footer);
    @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
    
    
            // Checks whether a hardware keyboard is available
            if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
    
                Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show();
                footer.setVisibility(View.VISIBLE)
            } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
                Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show();
                footer.setVisibility(View.INVISIBLE)
            }
        }
    

    注意:上面的代码只会调用虚拟键盘也可以查看Listen for keyboard show or hide event in android

    【讨论】:

    • 嗨@Ajeet 感谢您的反馈,您的回答看起来很有希望。我如何听键盘(显示/隐藏)?我不确定如何实现 onConfigurationChanged 方法的侦听器。如果您能告诉我如何在我的 onCreate 方法上实现这一点,我将不胜感激。
    • 对不起,上面的代码不起作用。我自己试过。试试这个gist.github.com/felHR85/6070f643d25f5a0b3674
    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 2015-11-06
    • 2020-02-24
    • 1970-01-01
    • 2019-08-24
    • 2017-10-27
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多