自定义软键盘输入盖住edittext的问题怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义软键盘输入盖住edittext的问题怎么解决相关的知识,希望对你有一定的参考价值。

想要开发一个在页面上弹出自定义输入软键盘的功能,基于上面这个帖子的形式,做了一个demo尝试调整了activity的android:windowSoftInputMode="adjustPan"和android:windowSoftInputMode="adjustResize"达到弹出输入法自适应,都不能都不能达到效果如何实现弹出输入法框时候判断是否遮盖edittext,遮盖的话让整个activity的rootview向上升到edittext恰好位于输入法上方的位置?

参考技术A 这个貌似跟xml布局的写法有关系。。我之前的项目 2个同样的布局 写法有了一点差别 一个是直接写。一个用的include的方式添加的。。include那个就可以自动的往上边移。另一个就不好使。。试着修改布局看看, 不行的话用楼上的。。加个scrollview 网上有方法 http://blog.csdn.net/feng88724/article/details/6186037 查看原帖>>本回答被提问者采纳

Android开发 解决AlertDialog中的EditText无法调出输入法的问题

在AlertDialog中使用自定义的View,如果View中有EditText,在上面点击,默认是跳不出软键盘的,不是焦点的问题。
解决方法,有两种,一是把AlertDialog换成Dialog,但这么一来,对话框的最外层会多出一个框,顶部还会空几十个DP,当然可以用setBackgroundDrawable(new ColorDrawable(0))把背景设为透明,隐藏掉边框,但是上面空着的几十个DP还在,对话框就不是在屏幕居中了。
代码:

Dialog ad = new Dialog(context);
ad.show();
Window window = ad.getWindow();
window.setBackgroundDrawable(new ColorDrawable(0)); 
window.setContentView(R.layout.cancel_sos_dialog);

最好的办法是第二种:

AlertDialog ad = new AlertDialog.Builder(context).create();
ad.setView(ManagerDialogLayout_.build(context,ad));
ad.show();
Window window = ad.getWindow();
window.setContentView(ManagerDialogLayout_.build(context,ad));

在调用show方法前先调用setView(layout),show后再调用window.setContentView(layout),两个Layout布局应该是相同的。

至于原因,暂时不明,但是确实解决了问题,在EditText上点击,可以调出软键盘,输入法了。

2013年1月6日:第一种方法的BUG,解决方法:
使用自定义的Style:

<style name="CustomDialogStyle" parent="@Android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.6</item>
</style>

Dialog ad = new Dialog(context,R.style.CustomDialogStyle);

 

以上是关于自定义软键盘输入盖住edittext的问题怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

EditText.SetText() 在自定义适配器中更改我的软键盘输入类型

android的webview下,如果设置了全屏,输入框获得焦点时,软键盘会盖住输入框,怎么破?

android 软键盘弹出默认是英文,怎么让默认为数字,但是还是能输入英文呢

在自定义适配器中隐藏软键盘

android开发中,EditText点击事件可以响应,就是不弹出软键盘。怎么解决,EditText是在Dialog中使用的

EditText底部边框被软键盘挡住的问题