Java 删除“;“永久页脚按钮”;当键盘被称为-材料设计

Java 删除“;“永久页脚按钮”;当键盘被称为-材料设计,java,android,xml,material-design,Java,Android,Xml,Material Design,我的问题是,每当用户调用软键盘在同一版面上键入editText时,如何删除包含按钮的RelativeLayout。正如您在下面的图片中所看到的,每次用户输入信息时,红色框中的按钮都需要消失,并在键盘关闭后重新出现 仅供参考-当键盘不在视图中时,需要将RelativeLayout固定在底部,因此“layout_alignParentBottom='false'不是我的解决方案。我认为这很可能需要通过编程来完成 对于如何解决这个问题的任何建议,我们都将不胜感激 <RelativeLay

我的问题是,每当用户调用软键盘在同一版面上键入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">

以下是谷歌Android开发者网站所描述的“持久页脚按钮”

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

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


您是否尝试过修改活动的
windowSoftInputMode
属性? 在清单中,对于相关活动,设置如下属性:

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


注意:上面的代码将只针对虚拟键盘调用,也请查看此代码

问题不在于没有足够的空间…只是RelativeLayout“按其应该的方式”固定在视图底部,因为它在键盘不可见时按设计工作(这样做的目的是,用户可以滚动屏幕,并且即使活动非常“高”,按钮也始终可见)。问题是,当用户输入信息时,相对位置应该消失(当键盘在屏幕上时,用户的注意力应该放在输入数据上)用户关闭键盘后,按钮可以返回。您好@Ajeet谢谢您的反馈,您的答案看起来很有希望。我如何收听键盘(显示/隐藏)?我不确定如何实现onConfigurationChanged方法的侦听器。如果您能告诉我如何在onCreate方法上实现此侦听器,我将不胜感激。抱歉,上面的代码不起作用。我自己尝试过。试试这个
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)
        }
    }