当软键盘打开时,我使用scrollview滚动我的视图。但它比按钮和键盘之间的空间要大得多。 我们可以删除这个大空间。
这是我的xml代码块。
var input = "This is from the standard input\n"; var i = 0; var Module = { preRun: function() { function stdin() { if (i < res.length) { var code = input.charCodeAt(i); ++i; return code; } else { return null; } } var stdoutBuffer = ""; function stdout(code) { if (code === "\n".charCodeAt(0) && stdoutBuffer !== "") { console.log(stdoutBuffer); stdoutBufer = ""; } else { stdoutBuffer += String.fromCharCode(code); } } var stderrBuffer = ""; function stderr(code) { if (code === "\n".charCodeAt(0) && stderrBuffer !== "") { console.log(stderrBuffer); stderrBuffer = ""; } else { stderrBuffer += String.fromCharCode(code); } } FS.init(stdin, stdout, stderr); } };
答案 0 :(得分:1)
要将点击按钮与软件键盘对齐,它应位于布局底部。
您应该在根布局中有单击按钮,该按钮应该具有与底部对齐的单击按钮,使用linearlayouts gravity或relativelayouts layout_alignParentBottom
所以基本上你按如下方式定义布局:
<RelativeLayout>
<Button
android:layout_alignParentBottom="true">
</Button>
</RelativeLayout>
和ta-da!按钮就在软键盘的顶部!
真正的问题..
正如评论中所述,这里的真正问题是只有在键盘可见时才将按钮与键盘对齐,这可以通过两个根据键盘状态切换可视性的按钮来实现
首先我们定义一个有两个按钮的布局,一个用于软件键盘状态,另一个用于&#34;常规&#34;状态
<RelativeLayout>
<ScrollView>
<LinearLayout>
<!-- ...... -->
<Button
android:id="@+id/regular_button">
</Button>
</LinearLayout>
</ScrollView>
<Button
android:id="@+id/keyboard_aligned_button"
android:layout_alignParentBottom="true">
</Button>
</RelativeLayout>
现在我们只是将键盘状态挂钩到按钮的可见性,因此我们需要以某种方式跟踪键盘状态,这在many places
中有解释。当键盘设置为可见时,常规按钮的setVisibility为GONE,键盘对齐按钮为VISIBLE。
键盘消失后,可见性反转