如何实现EditText随ScrollView高度变化,到达屏幕底部固定

 我来答
d0...m@163.com
2016-09-24 · TA获得超过233个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:90.4万
展开全部
在布局中放置两个EditText,一个设置为android:layout_below="@id/scrollview,称为“EditText1”另一个设置为android:layout_alignParentBottom="true",称为“EditText2”布局很简单,这里就不贴代码了
首先隐藏EditText2,计算ScrollView的高度或者EditText1的坐标,如果大于屏幕高度,就隐藏EditText1,显示EditText2,计算方法有很多种,这里先贴一种我使用的方法,但不管用哪种计算方法,都要注意调用view.post(new Runnable(){});把计算的代码放到线程里,不然计算的结果永远是0;
EditText1.post(new Runnable() {
@Override
public void run() {
int[] position = new int[2];
EditText1.getLocationInWindow(position);
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
if (position[1] + EditText1.getHeight() > wm
.getDefaultDisplay().getHeight()) {
EditText1.setVisibility(View.GONE);
EditText2.setVisibility(View.VISIBLE);
}
}
});

通过运行程序,确认这种方法是可行的,但是还有一个问题,当点击EditText弹出软键盘时,EditText2会自动上移,而EditText1被软键盘挡住了,通过查阅网上的资料,总体来说,有四种解决方案
方法一
在你的activity中的oncreate中setContentView之前写上这个代码
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式