我在android中有一个活动,其中有一个编辑框和编辑框下面的3个按钮.请查看附件.启动此活动时,默认状态为STATE1.(请参阅图像).键盘默认可见.现在,当我按下后退按钮或处理键盘时,我希望重新调整edittext并占用整个屏幕,如STATE2所示.
我不知道如何做到这一点.我将edittext的高度硬编码为基于目标设备的某些dp.我相信这必须改变.任何人都可以帮助我如何实现这一目标.
布局文件的XML和screencap一样
改变你的EditText
如下:
<EditText android:id="@+id/EditMessage" android:layout_ android:layout_ android:layout_weight="1" android:gravity="top" android:imeOptions="actionDone" android:inputType="textMultiLine|textFilter|textVisiblePassword|textNoSuggestions" android:maxLength="200" android:padding="5dp" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000" />
加 layout_weight = 1
在我看来,你并不需要adjustPan
.我会留给你决定.行为会有所不同,你可以尝试一下.以下是文档中所说的内容adjustPan
:
活动的主窗口未调整大小以便为软键盘腾出空间.相反,窗口的内容会自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容.这通常比调整大小更不合适,因为用户可能需要关闭软键盘以获得窗口的模糊部分并与其交互.
如果使用此按钮,底部的按钮可能会隐藏.而是使用adjustResize
:将此行放在里面的活动中AndroidManifest
android:windowSoftInputMode="stateVisible|adjustResize"
在你的清单中尝试这个..
<activity android:name="Activity" android:windowSoftInputMode="adjustPan"/>
并且你的edittext <requestFocus />
用于从那个开始本身它将集中
并且android:layout_weight="1"
它会自动填充屏幕.
<EditText android:id="@+id/EditMessage" android:layout_ android:layout_ android:layout_weight="1" android:background="#696969" android:gravity="top" android:imeOptions="actionDone" android:inputType="textMultiLine|textFilter|textVisiblePassword|textNoSuggestions" android:maxLength="200" android:padding="5dp" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000000" > <requestFocus /> </EditText>