片段的行为不一致

时间:2013-12-12 20:07:56

标签: android android-layout android-fragments android-keypad

我有一个程序,它使用Android设备作为另一个基于PIC的系统的接口。 Android有两种操作模式 - 一种是它提供HMI样式的显示器,显示连接系统的状态:另一种,它作为一个哑终端,允许我编程和改变被监视的系统。 empty terminal screen

我正在使用片段来处理终端活动。这有一个TextView显示输入文本和响应的过去历史记录,另一个TextView允许我输入命令行。在首次启动程序并访问终端显示屏时,触摸文本条目TextView会调出键盘,其他两个TextView会向上移动显示屏以腾出空间。这就是我要的。 terminal screen with keyboard - as required

我可以通过保存FragmentInstanceState然后使用fragTrans.hide()来访问HMI显示器。如果我然后返回到终端片段并开始重新输入文本,则键盘现在覆盖两个TextView,它隐藏文本输入框。 enter image description here

enter image description here 两种模式的唯一区别是,在重新输入片段时,我使用fragTrans.show()来显示终端模式:首次启动时,我使用fragTrans.add()。

首次使用终端和后续访问之间的另一个变化是,我用来访问终端的按钮最初是重叠的,但稍后会出现在键盘上方。

这个问题是由于fragment.show()和fragment.add()函数之间的差异造成的,还是我缺少另一个方面?

1 个答案:

答案 0 :(得分:1)

我认为这与您用于保存这些片段的活动有关。在清单文件中,将以下代码添加到您的活动中,以便在显示软输入时调整屏幕。

如果您正在使用两项活动,请确保它们都具有以下内容:

android:windowSoftInputMode="adjustPan"

<activity
    android:name="com.yourapp.MainActivity"
    android:label="@string/app_name"
    android:windowSoftInputMode="adjustPan" >
</activity>