没有做过这种效果,但是我可以大概提供一个思路:
首先你要在点击输入框后弹出软键盘,那么,你就必须得先为你的输入框注册一个点击事件监听器:OnClickListener
其次,在监听器内实现你想完成的工作,网上有很多类似的例子,像楼主推荐一个:
http://aijiawang-126-com.iteye.com/blog/662088 希望对你有帮助
首先你要在点击输入框后弹出软键盘,那么,你就必须得先为你的输入框注册一个点击事件监听器:OnClickListener
其次,在监听器内实现你想完成的工作,网上有很多类似的例子,像楼主推荐一个:
http://aijiawang-126-com.iteye.com/blog/662088 希望对你有帮助
解决方案 »
- 让你的android程序调用c/c++库文件(windows平台)
- png图片打不开
- 哎,看了一个星期的android了,模糊的很啊,看不懂啊
- 我是学生,自学android,希望大家推荐好点的教学视频!!
- 请问如何获得控件坐标 并且通过相应事件改变其位置
- android test project和android project有什么不同?
- android 2.3编译报 错 是 什么 问题啊
- import一个包的问题?
- ★★★★★activity调用问题★★★★★
- android4.3 ble如何进行advertise广播
- 使用ndk 运行的时候library not found
- android文件存储求助!!!
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(view, 0);
}
开始我的做法是,定义一个dialog,继承自alertdialog,然后里面全部的布局都是自己写的,按钮采用的也是imagebutton,而不像自带的只能在上面显示文字(要求的,没办法),这种情况下怎么弹不出软键盘。
而一般自定义dialog都是继承自dialog类的,然后这里我们可以操作的布局只有中间那一块,在这里我放一个editview,就可以弹出软键盘,现在着手去修改按钮布局吧,哎
另外碰到个问题,和大家分享下,在popupwindow中设置editview的时候,也是无法弹出软键盘的,但可以通过requestfoucs的函数得到焦点即可。
做法是:布局依然没变,整个dialog上的布局都由layout来加载
自定义类是继承自dialog的,重写带int的构造函数,这个参数是用来加载dialog的主题的
然后在string.xml中定义主题
代码如下:<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!--边框 -->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item><!--半透明 -->
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/black</item>
<item name="android:windowBackground">@null</item>
<item name="android:backgroundDimEnabled">false</item><!--模糊 -->
</style>
自定义dialog,继承自Dialog类(而非alertdialog),重写带有主题的构造方法,然后你想生成dialog的时候,用该构造方法构造一个dialog即可。
主题的代码在8楼贴出。
我的测试与理解:大家谈的是 AlertDialog, 这里楼主的解决办法是 抛弃 AlertDialog这层, 直接继承Dialog...经过我的测试, 确实OK 其实,不用楼主提供的主题, 直接用 Dialog 默认主题, 软键盘也能正常 弹出。。 测试代码如下:
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
mLayout = (LinearLayout) inflater.inflate(R.layout.alert_add_new_member, null);Dialog mDialog = new Dialog(CustomAlertDialog.this);
mDialog.addContentView(mLayout, new LinearLayout.LayoutParams(-2,-2));
mDialog.show();所以,与楼主使用什么主题 无关不过楼主的主题 与 默认的主题的区别 在:
<item name="android:windowNoTitle">true</item>
默认的主题是没有上面这个的,楼主加了这个。。默认的主题由于没有这个属性,导致弹出的输入法与对话框有部分重叠,很难看。
加上这个属性, 弹出的输入法与对话框不会出现重叠,一上一下,错落有致。。体验上很舒服。。所以,建议大家自定义dialog的时候, 最好加上 <item name="android:windowNoTitle">true</item>
2 也不需要自定义啥主题, 默认主题就可以。 =========================== 结帖 ============================
在调用show方法前先调用setView(layout),show后再调用window.setContentView(layout),两个Layout布局应该是相同的。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));
其中有一段:
ote: Activities provide a facility to manage the creation, saving and restoring of dialogs. See onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), anddismissDialog(int). If these methods are used, getOwnerActivity() will return the Activity that managed this dialog.Often you will want to have a Dialog display on top of the current input method, because there is no reason for it to accept text. You can do this by setting theWindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM window flag (assuming your Dialog takes input focus, as it the default) with the following code:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
另外:为了防止弹出输入法时把后面的背景挤变形,可以在Manifest里添加:
android:windowSoftInputMode="adjustPan|stateHidden"嘿嘿 我的就是这么解决的!